How to Send Data from Zapier to Bubble

Perhaps you need to create, read, or update data in Bubble from a third-party app. Or trigger an API workflow in Bubble from a third-party app. You can use Zapier to do this by leveraging Bubble app actions in the steps of your zap.

How to Send Data from Zapier to Bubble

In my last tutorial, I showed you how to send data from Bubble to Zapier.

If your Bubble app needs to regularly send data to Zapier for the purpose of pushing that data to other apps, then having this automation in place is critical.

To make it happen, we covered the following steps in depth:

  • Exposing your Bubble API
  • Creating a type in your Bubble database
  • How to set up the Zapier plugin
  • Setting up a front end in Bubble for data collection
  • How to implement a workflow in Bubble that triggers a Zapier zap
  • Implementation of final zap in Zapier

But what if you need to send data the other way around from Zapier to Bubble?

Perhaps you need to create, read, or update data in Bubble from a third-party app. Or trigger an API workflow in Bubble from a third-party app. You can use Zapier to do this by leveraging Bubble app actions in the steps of your zap.

These Zapier action events include ...

  • Create Thing (creates a new thing in your bubble database)
  • Find a Bubble Thing (Searches for a Bubble database record)
  • Modify Thing (modifies a thing by ID)
  • Trigger API workflow (Kicks off an API workflow in Bubble)

If you have not yet set up the Zapier plugin, I have a separate tutorial available that you can refer to. You can find it here.

Assuming that you already have it set up, let's dive right into it.

Create a Way to Visualize the Data in Bubble

To perform various data manipulations, we will send requests from Zapier to Bubble.

To view the data, it is recommended to create a page with a repeating group table. With this, you can see the data on the front end of your app, and any changes made to the data will be instantly reflected.

As an example, I created a repeating group that shows a list of customer names, phone numbers, and email addresses. For this, I added a type named 'customer' in the database, and the repeating group pulls data from the corresponding fields in the type.

However, creating a repeating group is not mandatory, and you can simply monitor the app data and refresh the page whenever Zapier sends requests to Bubble.

Zapier Trigger Set Up

To trigger the zap, I created a basic Google Form with input fields that match the fields in the 'customer' type in Bubble, such as name, phone number, and email address.

When creating data in Bubble from Zapier, the trigger event can be anything as long as the fields in the trigger step match up with the fields of the corresponding type in the Bubble database.

To trigger the zap, I selected the 'New Form Response' option from the Google Forms trigger event. This option will initiate the zap whenever a new submission is made through the form.

After setting up your trigger event, you can proceed to test it and check the output data for the email, phone, and name fields.

Once everything looks good, it's time to move on to the first Bubble action event which is 'Create Thing'.

Create a Thing in Bubble (From Zapier)

For the Bubble action event, select 'Create Thing.' This will create a new thing in the specified type of your bubble app database.

Next, add your Bubble account and then select the App ID. When you click on the dropdown, you should see a list of all your Bubble apps. Select the one you are using for this zap.

Select the app version. For this example, we selected 'Development' (version-test) because the current version of our app is not yet pushed to production.

Once you build your Zap, you can deploy your Bubble app to live for it to work in the live version.

Next, you need to select the Bubble data type that you want the new data to be created in. Because a new customer record is being created, we selected the data type 'customer' for this example.

You should then see the fields from your Bubble type populate as input fields in the step. Map the output data from the trigger event to the input fields in the Bubble action step.

In the example above, you can see that I've mapped the email, name, and phone values from Google Forms to their corresponding fields.

Once you've finished mapping the data, you can proceed to test the Zap, and Zapier will automatically create a new thing in Bubble.

In the response, you'll see that a new thing was created in Bubble. The data from your trigger step will automatically populate the fields for the new thing.

In addition to the data fields, a unique ID will also be created for the record. As you can see in the example above, the ID for the newly created Bubble record is 1673554055564x497241677571847550.

Now, go back to Bubble, and you should see the new thing created in your data type.

At this point, you can publish the zap and test it by making a few submissions from your trigger app.

Find a Thing In Bubble (From Zapier)

To find an existing record in your Bubble database, you can use the "Find a Bubble Thing" event.

This is useful when you need more information about a specific record in Bubble.

Like the previous step, you'll need to select the app ID, app version, and data type when setting up the action.

However, there are three new selection/input fields: search field, search constraint, and search term.

The search field is the column of the Bubble type that you want Zapier to search. It can be any column, but for this example, I've selected 'phone' as the search field.

The search constraint is a logical condition that determines whether the search is successful or not. You can choose from the following search constraints:

  • Text Contains
  • Text Does Not Contain
  • Equals
  • Not Equal
  • Empty Field
  • Not Empty Field
  • Greater Than
  • Less Than
  • In List
  • Not In List
  • List Contains
  • List Does Not Contain
  • Empty List
  • Not Empty List

The available selections for the search constraint will vary depending on your use case. In this example, I wanted to find a record in the 'customer' Bubble type that matches the phone number from a Google Form submission, so I selected the 'equals' search constraint.

The last field is the search term. Zapier finds an existing thing in Bubble by checking the search term against the search field and search constraint. If the condition is met, Zapier will return the full record details, including all the fields in the type.

As you can see, Zapier was able to locate the record and returned the entire row in the type, including the thing ID.

Modify a Thing In Bubble (From Zapier)

The "Modify Thing" event allows you to update an existing record in Bubble. It uses the ID of an existing record and gives you the ability to update the fields in the type using output data from previous steps.

To set up the "Modify Thing" event, you'll need to select the app ID, app version, and data type, just like in the previous steps.

Once you've done that, you'll see a field to input the 'Thing ID.' This is the Bubble record ID, which you can grab from any of the previous Bubble actions. Just go into 'Custom' and select the ID of the thing from the most relevant Bubble action.

You'll then see the fields from your Bubble type populate as input fields in the step. The fields you choose to map will update with new data from previous steps, while the fields you ignore will remain untouched.

I mapped all the fields from the Google Form to the fields of the Bubble data type. When a new submission is made on Google Forms, Zapier will update the fields of the specified row ID with the new submission data.

After testing, I removed the "Create Thing" step, published the Zap, and ran a test. You can see the results below...

Before ...

I updated the name and phone fields in my Google Form with new values and left the value in the email field the same since it's the search term in the search step.

If the email value is changed, Zapier won't be able to locate the existing record and the zap will error out.

After ...

After submitting the form, Zapier was able to locate the record (the first record in the table on the left) and updated the 'Name' and 'Phone Number' fields with the new values from the last Google Form submission.

Trigger An API Workflow in Bubble (From Zapier)

To trigger an API workflow in Bubble from Zapier, you must first have an existing API workflow.

To create one, navigate to "Backend Workflows" and add a new workflow event. Add a new workflow event and make the event 'New API Workflow ...'  

Give the API workflow a name, then check the box that says "Expose as a public API workflow".

By selecting this option, you are granting permission for external requests to be made via the Workflow API in Bubble Editor, either through a custom-built client or a third-party service like Zapier. Non-public API workflows come in handy for performing operations like scheduled workflows and bulk operations within the app or editor, as they can be initiated from other parts of the app.

Bubble gives you the option to select the HTTP request (POST or GET) by which you want to trigger the request. For this example, select 'Trigger workflow with 'POST.'

The parameters are the information that the API workflow can receive.

You can define them in two ways: manual or automatic. If you choose manual parameter definition, you will have to list them individually. You can opt for this method when you trigger the API workflow using either a POST or GET request.

If this is a list, check 'Is a list/array.' If this parameter is optional, check 'Optional'. For this example, I named the Key 'customer' and defined the data type as 'Customer.'

Finally, make the response type 'JSON Object.' Alternatively, the API can redirect to a page in your app and return data as querystring.

As an alternative, the API can redirect to a page within your app and provide data in the form of a query string. A 302-page redirect comes in handy when calling the API workflow from the browser.

For the first step of the API workflow, I added a very simple action to send an email to a user.

I then mapped the customer's email to the 'To' input field.

I made the email subject, "Thank you for signing up" and did not include any dynamic data.

For the body, I wrote out the following:

{customer's name}

Thank you for signing up. Here is the information you submitted to us:

Phone: {customer's Phone}
Email: {customer's Email}

When the Google Form is submitted, a POST request will be made to the Bubble API, including the customer parameter.

This will trigger the API workflow event and pass the data through to the 'Send Email' step, resulting in the user receiving an email immediately. Navigate back to Zapier and add another Bubble action step to your Zap. For the event, select 'Trigger API Workflow' - this will kick off an API workflow.

Once you have selected the App ID and App Version, a drop-down input for the API workflow will appear. Upon clicking this, you will be presented with a list of all your backend API workflows in Bubble, including the one you just created.

Zapier needs to be able to associate the API workflow with a record of the type specified in the parameter. Grab the ID output data from any one of the previous Bubble actions i.e create thing, find thing, modify thing etc.

Next, proceed to test the Zap. An email should be sent from Bubble to the test email from the Google Form submission.  

If the zap worked, proceed to publish and make a test submission from the Google Form.

When I tested the zap, it worked perfectly and I received an email containing the information from the Google Form submission.

If you aren't sure whether the API workflow step worked correctly, you can always check your logs in Bubble and or the Zap history.

Concluding Thoughts

Backend workflows can be extremely useful when you need to trigger specific processes from an API, recurring events, database triggers, or other custom events.

For some applications, the ability to trigger an API workflow from another app is essential and Zapier makes this very simple and straightforward to implement.

If you need a way to automatically create, view, or update existing records in your Bubble database from another app, then leveraging the Zapier plugin is a great option.

Using this integration, you can enrich your Bubble app with data from external sources. For instance, if you are creating a Bubble app that provides daily weather forecasts, you can set up a zap that creates new report data in your Bubble database using the Weather by Zapier app as the trigger + Bubble actions.

Please let me know if you have any questions about this tutorial. If you found this helpful, please consider subscribing to my newsletter.  


What are you trying to automate and why? I'd love to know!

Do you have an idea for a tutorial?  Share it in the comments!

Need help with an automation? Hit me up - hello@joshnocode.com

I write weekly about business process automation hacks. If that's something you're into, join me, and let's automate together.