Excel Integration
Application bugs
Widget Bugs
Manual invoices
Useful Queries
Service accounts
Custom widgets
Initial things to check
Troubleshooting
Common questions
Initial steps upon report
The majority of bugs will be widget bugs. A widget bug as an issue that is specific to one particular widget or service
How to spot a widget bug..
Raising the invoice
Setting up the account correctly in the database
Cancelling the subscription in Recurly (is transferring from a monthly plan)
How to find a user
How to find a particular widget on a dashboard
A service account is what is created when you connect a third party service, such as Google Analytics, to Geckoboard
Facebook Service Accounts
Service account validation
Polling
Push
Highcharts
Push for Highcharts
Is the customer using the correct API Key?
Is the customer using the correct widget key, and is that widget key associated with the correct widget type? For example, if the customer is trying to push to a number widget - it’s essential that the widget key is from a number widget widget
Has the customer enabled content on the spreadsheet?
Has the customer enabled Macros on the spreadsheet?
Is the customer sitting behind a firewall that could be preventing the connection?
Ask the customer for their sharing dashboard and try to push data to the widget yourself, using a spreadsheet.
How to find the widget key of a widget on a sharing dashboard
1) Inspect element to get the widget ID you’re looking for widget-123456
2) Use that ID and look up gb_widgets_dashboard on the id field
3) widget_key field
How to find a users API key
1) look up the user in the gb_users table
2) api_key field
Note: the API key is at the user level, not the group. One group can have many API keys
Q) Can you push to more than one widget of the same visualisation?
A) No, suggest that the customer uses multiple spreadsheets
Q) Can you push to a Highcharts widget?
A) No, find out what chart the customer wants to use and assist them in building a custom widget
Attempt to re-produce the bug
If you can re-produce it, assess the severity and notify dev team immediately if important, if not raise bug card on trello and include detailed steps on how to re-create. Let the customer know that you’ll get back to them and give an estimated time frame if possible
Try to reproduce with your own account..
The response from Geckoboard’s data API is valuable when troubleshooting widget bugs.
A response along the lines of “the method X could not be defined” almost always represents a widget bug. Since even if the configuration is wrong, or the data is incorrect that still shouldn’t happen
Raising the invoice is pretty straight forward. Ask the customer for the following:
and edit out one of the template word docs we have with that info.
Be sure to save it as a PDF, make sure nothing is cut off, the invoice number is correct and that VAT is also shown in GBP if a UK company.
Send to the customer and to Clem.
Ensure that status is set to “a” and billing is set to “y” in the gb_groups table using the standard user lookup query
In gb_subscriptions ensure that annual and is_manual are both set to 1. The expires_at date is required and should be in the format: 2014-05-14 12:41:22 (this is the date you want the account to expire i.e. one year from now)
Plan_id should reflect the plan the customer has paid for. Cross reference this against the gb_plans table
The best way to do this is to find the subscription, click More > Cancel subscription > keep in mind that this will immediately inactivate the account so you will need to go to the database, set the status to “a” billing to “y” and remove the failed payment notification immediately
SELECT u.*
FROM gb_users u,
gb_users_teams t,
gb_permissions p,
gb_groups g
WHERE u.id = t.user_id
AND t.team_id = p.team_id
AND p.group_id = g.id
AND u.email LIKE ‘email address here’
#replace the last line with either of these:
AND g.account like ‘account name here’
AND g.id = 123456;
select * from gb_widgets_dashboard where id = 123456
Facebook accounts expire after 30 days and need to be re authenticated. This is communicated to the customer via email but often they do not see it, and wonder why the widgets break
Stress that this is a limitation with Facebook and that there is nothing we can do
You can Re-Auth in Your Account > Service Accounts > Facebook
A service account should not be able to be created if incorrect credentials, such as password or API key are used.
If it is possible to create a service account with incorrect credentials, that is a bug and should be raised with the title “Service X doesn’t have service account validation”
A polling widget is the process of providing the custom widget with a URL which Geckoboard will pull data from.
The refresh rate is set by the user anywhere from 30 seconds to many hours
Pros
Cons
A push widget works by the customer doing some sort of push request (such as a HTTP post) to a URL. The URL includes the customers widget key and the customers API key should be defined in the payload
Things and how to troubleshoot
Pros
Cons
If you try and fail to reproduce the error (with identical config) using your own data then it’s likely not a widget bug rather a user error. Ask for permission to access their account and set it up yourself. 9/10 times it will then work.
Consider raising the fact that the customer should have seen a better error message as a bug
Easier
Less programming required
Easier for us to troubleshoot
Not real time
Less secure
The first thing to do is (ask the customer first) try to push dummy data to their widget. If that works, you know it is a problem somewhere with their script.
Use Curl…
Data updates in real time
Very secure
Works behind a firewall
Harder to set up
CURL is a way to send data to a URL (in our case, that of a custom widget) using the terminal
curl -X POST https://push.geckoboard.com/v1/send/example-widget-key -d ‘{“api_key”:”example-api-key”,”data”:{“item”:[{“text”:”This is a new message”,”type”:0}]}}’ -H
Copy the above command into a text editor, use the correct widget key and API key and copy the data the customer is sending after the “data”: attribute