Keep Sinch audiences in step with the latest customer activity, and trigger published Sinch Campaigns to any cohort with per-recipient personalization filled from your customer data.
View Sinch Campaigns's documentation.
Supported syncing
| Sync type | Description | Supported sync modes | API reference |
|---|---|---|---|
| Audience | Replace the contents of an existing Sinch audience with the current rows in your Hightouch model. | Mirror | Audiences API |
| Campaign trigger | Trigger an existing Sinch campaign for the contacts in your model, with optional template variables and a shoot tag. | Insert | Send to contacts |
For more information about sync modes, refer to the sync modes docs.
Connect to Sinch Campaigns
To connect Sinch Campaigns to Hightouch you need the API key from your Sinch Campaigns console. It's a pre-encoded Basic-auth token, visible under your account settings.
-
Go to the Destinations overview page and select Add destination.
-
Select Sinch Campaigns from the destination catalog.
-
Enter the following credentials, then select Continue:
- Region: the Sinch Campaigns region your account is provisioned in. Choose European Union or United States. Sinch hosts EU and US tenants separately, so picking the wrong one fails authentication on save.
- API key: your Sinch Campaigns API key, copied from the console. It's already base64-encoded, so Hightouch uses it directly as the Basic auth header — there's no separate secret to enter. Hightouch uses it to mint short-lived bearer tokens for the Campaigns API and JWTs for the Audiences API.
When you select Continue, Hightouch authenticates against both the Sinch Campaigns API and the Sinch Audiences API. If only one check fails, the test-connection step calls out which API to investigate — usually an account that isn't provisioned for Audiences, or a key from the wrong region.
The single API key authorizes both APIs. The Sinch account Hightouch reads and writes audiences against is derived from the key itself, so there's nothing else to configure.
Sync configuration
Audience
Audience syncs keep a Sinch audience in lockstep with a Hightouch model. Each sync run uploads the model's current contents as a CSV and replaces the audience membership wholesale.
When you configure the sync, you can pick an existing Sinch audience or create a new one by name. Hightouch populates the existing-audience dropdown by paging through every audience in your Sinch account.
Hightouch refuses to upload a zero-row file. If the source query returns no rows, the sync errors instead of clearing the Sinch audience. Wiping an audience by accident is almost always a query bug, not the intent.
Sync mode
Audience syncs run in Mirror mode. Each run reuploads the full membership. Sinch's Audiences API doesn't expose an append or remove operation, so incremental updates aren't possible.
Configure record matching
Each row must include a phone number in E.164 format (for example, +5215512345678). Sinch identifies audience contacts by their MSISDN.
| Destination field | Required | Notes |
|---|---|---|
| Phone (MSISDN, E.164) | Yes | Mapped from a column of phone type. Becomes the msisdn column in the uploaded CSV. |
Map fields
Add a mapping for each extra attribute you want to attach to contacts in the audience. Each mapping becomes a column in the uploaded CSV, and the mapping name is the column header Sinch sees.
Mapping names must use lowercase letters, digits, and underscores, and must start with a letter (for example, first_name). Date values are converted to ISO 8601 before being written to the CSV.
Trigger campaigns
Campaign trigger syncs fire an existing Sinch campaign for the rows in your model. Each row becomes one recipient, and positional template variables in the campaign template are filled from the row's mappings.
Only campaigns marked ready_to_shoot in Sinch appear in the campaign dropdown. Draft, paused, or unpublished campaigns must be published in the Sinch console first.
Sync mode
Campaign trigger syncs run in Insert mode. Each batch of rows is submitted to Sinch's send-to-contacts endpoint, which returns a task identifier. Hightouch then polls /tasks/{task_id} every 5 seconds until Sinch reports the task as finished.
Hightouch sends recipients in batches of 500 with a parallelization of 1. Sinch's API rejects concurrent sends to the same campaign, so a sync to a single campaign always runs sequentially. Syncs that span multiple campaigns are still grouped per-campaign before submission.
Map fields
| Destination field | Required | Notes |
|---|---|---|
| Campaign | Yes | The Sinch campaign to send. Pick from the dropdown (column or constant). Only campaigns marked ready_to_shoot are available. |
| Phone | Yes | Source column carrying the recipient's phone number in E.164 format. Sinch silently drops rows that don't parse. |
| Shoot tag | No | Optional column or constant. Tags every send in this run so the results roll up together under the Sinch Shoot Stats endpoint. If omitted, Sinch generates one. |
Map template variables
Sinch substitutes mapped values into the campaign template positionally. The first mapping becomes [[A]], the second becomes [[B]], and so on. Add one mapping per template placeholder, in the same order they appear in the template. The mapping name is for your reference and is not sent to Sinch.
Date values are converted to ISO 8601 before being substituted, since Sinch's templates render the raw text as-is.
Tips and troubleshooting
Validate your setup
After your first sync completes, verify the upload in Sinch:
- Audience syncs: open the audience in the Sinch console and confirm the contact count matches the row count from your model.
- Campaign trigger syncs: check the campaign's stats by shoot tag. If you configured a shoot tag, Sinch rolls every send from this run under it; otherwise, use the run's timestamp.
Per-row errors on campaign triggers
When Sinch reports that a send-to-contacts task failed, Hightouch can't always map the failure to specific rows — Sinch's error payload isn't consistently keyed across error types. Hightouch surfaces Sinch's full error message against every recipient in the failing batch, so the Live debugger is the most reliable place to see what went wrong.
Common errors
To date, our customers haven't experienced any errors while using this destination. If you run into any issues, please don't hesitate to . We're here to help.
Live debugger
Hightouch provides complete visibility into the API calls made during each of your sync runs. We recommend reading our article on debugging tips and tricks to learn more.
Sync alerts
Hightouch can alert you of sync issues via Slack, PagerDuty, SMS, or email. For details, please visit our article on alerting.
