Fulcrum to Google Fusion Tables.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
config Move environment var config to config folder Nov 12, 2013
lib Accept record events where fulcrum form doesn't exist Nov 19, 2013
spec Accept record events where fulcrum form doesn't exist Nov 19, 2013
.gitignore Move environment var config to config folder Nov 12, 2013
Gemfile.lock Add guard-bundler Nov 12, 2013
config.ru Fix busted rackup config Nov 12, 2013


Fulcrum Fusion

An application to integrate Fulcrum and Fusion Tables.

This application can be deployed and then set as a Webhook within Fulcrum. Once this is done, Fulcrum will push changes to your data to this application, which will send them to Google's Fusion Tables.


First off, let's gather the configuration we'll need.

Below, we'll talk about these configuration variables:


What follows is how to determine what values you'll use for each configuration variable.


You'll need a Google account to interact with the Fusion Tables. This value is simply your Google account's username. For instance, if your Gmail address is walter.white@gmail.com, your username is walter.white.


This is the password for your Google account.

If you have Google's 2-step verification enabled, you will need to generate an application-specific password. Then use this application-specific password for this value, instead of your regular password. Using your regular password will cause issues since you can't perform the 2nd step of the verification.

If running locally, the config file is ignored from the git repository by default, so the password isn't going to be shared with everyone.


You need to use the Google account above to set up an API token. This token is tied to your Google account and will be used for interacting with your Google Fusion Tables. See the Notes section below for more details.


You'll likely want to use https://web.fulcrumapp.com/api/v2 for this value.

If you're using something other than the default production API, however, be sure to change this value appropriately. For instance, when you're doing local development or testing outside of production.


This is the API key belonging to the member of the organization you'll be using for this account. Remember, your plan needs to support webhooks and the member needs to have the proper permission.

Remember, this API key is specific to the organization, member and FULCRUM_API_URL specified above.

Get It Running


Deploy to Heroku using the following steps:


  • Clone this repo
  • cd fulcrum-fusion
  • Install the Heroku Toolbelt
  • heroku login
  • heroku create
    • Look for the application name from this
    • Remember this name/URL for later


Use the configuration values from above to fill in these values:

  • heroku config:set GOOGLE_USERNAME=<value from above>
  • heroku config:set GOOGLE_PASSWORD=<value from above>
  • heroku config:set GOOGLE_API_KEY=<value from above>
  • heroku config:set FULCRUM_API_URL='<value from above>
  • heroku config:set FULCRUM_API_KEY=<value from above>


  • git push heroku master

For more help check out how to get started with Node.js on Heroku.


Go into Fulcrum and add your Heroku application's URL as a webhook.



bundle install


cp config/env_vars.rb.sample config/env_vars.rb

Use the configuration values from above to fill in config.rb.

Remember to change the API URL, since you're likely not hitting production. Also add your API key for the Fulcrum Organization you're interested in.


We need to run the Sinatra server:



In your local Fulcrum server, create a webhook with localhost:9292 as the URL.

See it in Action

This assumes everything is hooked up properly between Fulcrum and this app.

  • Create a form in Fulcrum. Shortly, you'll see a Fusion Table in your Google Drive for this form.
  • Create a record. Then you should see this as a record in that Fusion Table created above.
  • Do an import in Fulcrum. Shortly you'll see the form and all the data in the appropriate Fusion Table.


Here's how things currently work:

  • Each new from will be created as a new Fusion Table.
  • A table will be created called FulcrumApp_<FormName>_WithId_<FormId>. The name is constricted by the library used to work with Fusion Tables.
  • Due to limits with the Fusion Tables API, there maybe some failures. The code will retry the same request until it succeeds or it reaches a maximum of 10 retries. This could exceed the 20 second timeout for the webhooks, but it's unlikely.
  • A record that comes in with columns that aren't in the Fusion Table will not be able to be added with the user-filled in columns added. Only the "system" columns applicable to all fusion tables can be filled in, in this case. The data will still be available in JSON form in the 'form_fields' column.

Development and Testing


To change the port the application runs on, use the -p option on rackup. For instance, rackup -p 3002.


To run all the tests for Fulcrum Fusion, simply run:

bundle exec guard

This will run all the RSpec tests.

When you're doing development, guard will watch what files change and run the specs as needed.


As mentioned above, you'll need a Google API token to interact with the Fusion Tables. Follow these steps to get one.

  • Make sure you're logged into the Google account you wish to use.
  • Visit the developer console.
  • Create a New Project with a name and project ID to suit your needs.
  • After this is created, go into the project.
  • Click the APIs & auth link.
  • In the list of APIs, find Fusion Tables API
  • Click the OFF button to toggle it to ON.
  • Then in list of links on the far left, click Credentials.
  • Click CREATE NEW KEY, then Browser key.
    • Select another type or enter more specific info if you need more security.
  • The API key shown here will be the GOOGLE_API_KEY you need.