Triggering a Flow: Using an External Application to Start a Flow

Zapier’s Start Flow action lets you send contact data from an external app (like Google Sheets, Mailchimp, or a CRM) into RapidPro and automatically start a flow. This is useful for syncing updated contact details, launching recurring check-in flows, or starting flows from form/CRM events. The setup relies on three things: (1) a Trigger app in Zapier (for example, “New or Updated Spreadsheet Row” in Google Sheets), (2) the Start Flow action in Zapier, and (3) a RapidPro flow that references incoming values with @trigger.params.variable_name (and optionally saves them to contact fields). External variables only exist in the flow if they’re explicitly mapped and sent by the Zap.

Quick Setup Checklist

Use Zapier to send external app data into RapidPro and automatically start a flow for a contact.

  1. Prepare your external data source (example: Google Sheets)
  2. Create a RapidPro flow that uses @trigger.params variables
  3. Create a Zap and configure the trigger step
  4. Add the RapidPro “Start Flow” action in Zapier
  5. Map the contact URN and extra fields to pass into the flow
  6. Test the Zap and verify results inside RapidPro
1
Prepare your external data source (example: Google Sheets)

Create or update the spreadsheet (or other app data source) containing the values you want to send to RapidPro.

In this example, your sheet includes:

  • name
  • address
  • phone (used as the contact URN)

Important: The phone number must include the country code.

Tip: Column headers become variable names in Zapier and can be referenced later as @trigger.params.name, @trigger.params.address, etc.

[CAPTURE: Show a Google Sheet with column headers for Name, Address, and Phone Number (including country code).]

2
Create a RapidPro flow that uses external variables

Create the flow that will be started by Zapier. Inside the flow, reference external values using:

@trigger.params.variable_name

Example variables:

  • @trigger.params.name
  • @trigger.params.address

[CAPTURE: Show a flow message node referencing @trigger.params.name and @trigger.params.address.]

Save external values to contact fields (optional)

To persist external values beyond the flow run:

  1. Add an Update the Contact action.
  2. Assign the external variable to a contact field (for example, set Name = @trigger.params.name).

[CAPTURE: Show an Update the Contact action saving @trigger.params.name to a Name field.]

Important: If you don’t save external values to contact fields, they only exist for the duration of the flow run.

3
Create a Zap and configure the trigger

In Zapier:

  1. Create a new Zap.
  2. Choose your source app (example: Google Sheets) as the trigger.
  3. Select New or Updated Spreadsheet Row.

[CAPTURE: Show Zapier with Google Sheets selected and the trigger set to New or Updated Spreadsheet Row.]

Configure the trigger step

Next:

  • Connect your Google account.
  • Select the Spreadsheet and Worksheet (often Sheet 1).
  • Leave the trigger column as any_column unless you have a specific need.

[CAPTURE: Show the trigger configuration screen with spreadsheet and worksheet selected.]

Pull sample data

Test the trigger to pull a sample row. This makes column values available for mapping in the Start Flow step.

[CAPTURE: Show Zapier displaying sample data pulled from the spreadsheet.]

4
Add the RapidPro “Start Flow” action

After the trigger step, add an action step:

  1. Choose RapidPro (or Rapidpro App) as the action app.
  2. Select Start Flow.

[CAPTURE: Show Zapier with RapidPro selected and the action set to Start Flow.]

Connect your RapidPro account

If this is your first time using RapidPro in Zapier, authenticate your RapidPro account when prompted.

[CAPTURE: Show the RapidPro account connection screen in Zapier.]

5
Configure the Start Flow template and map fields

In the Start Flow action step, you must:

  • Select the flow to start.
  • Provide the contact URN (phone number with country code).
  • Add any extra fields you want to pass into the flow (for example: Name, Address).

In this example:

  • URN comes from the spreadsheet’s Phone column.
  • Extra fields (Name, Address) come from the spreadsheet’s corresponding columns.

[CAPTURE: Show the Start Flow template with Flow selected, Phone number mapped, and Extra fields populated from spreadsheet data.]

Tip: If you don’t see a field in the dropdown, confirm that sample data was pulled successfully in the trigger step.

Optional settings

Depending on your workflow, you may also:

  • Restart contacts who have already run the flow.
  • Start the flow for specific groups or contacts (if available in your setup).

Important: Restarting flows enables repeat participation but should be used intentionally (for example, annual updates).

6
Test the Zap and verify in RapidPro

Before going live:

  1. Send a test from Zapier to RapidPro.
  2. Confirm the flow starts successfully.
  3. Verify messages and saved contact fields (if you used Update the Contact actions).

[CAPTURE: Show Zapier confirming a successful test run.]

Verify the result in RapidPro

After the test:

  • Open the flow’s Results to confirm the contact run.
  • Check the contact’s Message History.
  • Confirm external variables appear correctly (and persisted fields are updated if configured).

[CAPTURE: Show a contact message history displaying values passed from Zapier.]

Common Issues

The flow doesn’t start when the Zap runs

Confirm the Start Flow step is connected to the correct RapidPro account and flow, and that the contact URN is mapped correctly (phone number with country code). Also confirm the Zap is turned on.

@trigger.params values are empty in the flow

External variables are only available if they are explicitly passed in the Start Flow step. Re-check the Extra Fields mapping in Zapier and ensure sample data was pulled in the trigger step.

I don’t see spreadsheet fields available for mapping

Zapier only shows fields after sample data is pulled successfully. Re-test the trigger step so Zapier can fetch a real row from the spreadsheet.

Contacts don’t have updated values after the flow ends

@trigger.params values are temporary unless saved to contact fields. Add an Update the Contact action to store the incoming values (for example, Address = @trigger.params.address).

The phone number is rejected or creates unexpected contacts

Make sure the URN includes the correct country code and formatting. If your source data contains spaces or symbols, normalize it before sending to RapidPro.