Contact sync API and data validation rules
Contact sync in Arino One is an inbound API you configure once per external source — a CRM, spreadsheet automation, or scheduled script — so that system can push contacts into a specific group on its own schedule, instead of you re-running a manual CSV import every time records change. It sits alongside data validation, which lets you enforce quality rules on custom fields so records arriving through sync, import or manual edit are held to the same bar.
Setting up a sync source
From Settings → Contact sync, create a source and configure:
| Setting | Purpose |
|---|---|
| Name | Identifies the source in the list and run history. |
| Group | The single Arino One group this source writes into. Each source targets exactly one group. |
| Mode | upsert (add/update, leave the rest of the group alone) or replace (this run's payload becomes the group's full membership). |
| Default tags | Applied to synced contacts when the payload doesn't specify tags of its own. |
| Default opt-in | Applied when the payload doesn't specify an opt-in status. |
| Enabled | Turns the endpoint on or off without deleting its configuration or key. |
Saving creates the source and returns an API key once — copy it immediately, since it's stored server-side only as a hash and can't be retrieved again later. If it's lost or compromised, rotate it; the old key is invalidated the moment a new one is issued, so update any waiting automation with the new value at the same time.
Choosing upsert vs replace
Use upsert for a CRM segment that grows continuously — new leads added daily, existing contacts updated in place, matched by phone number. Nothing already in the Arino One group is removed just because a sync run doesn't mention it.
Use replace when the external source is the single source of truth for exact group membership — for example, "everyone currently marked Active Customer in the CRM." Each run overwrites the group to match the payload precisely, including removing contacts no longer present. Replace mode is powerful and destructive if misconfigured, so test with a small, low-stakes group first.
Connecting an automation tool
The endpoint accepts POSTed contact records and works with any tool that can make an authenticated HTTP call on a schedule: Zapier, Make, n8n, a CRM's native webhook feature, or a cron job calling cURL. Typical setup:
- Trigger on a CRM event (contact created/updated) or run on a fixed interval.
- Map the CRM's fields to
phone_e164plus whichever core and custom fields you want to carry over. - POST to the source's endpoint with the API key attached.
- Check the run history in Settings → Contact sync after the first few runs to confirm records are landing as expected before trusting the feed for live campaigns.
Run history
Every sync source keeps a log of its runs, so you can confirm an integration is behaving before it becomes load-bearing for a campaign. If a run shows errors, check the payload shape against the source's configured mode and any validation rules on the target custom fields — a rejected value there is a common cause of a run reporting fewer successes than expected. See CRM sync issues for a broader troubleshooting checklist and webhooks not arriving if the trigger side of your automation seems to be the problem rather than the sync itself.
Data validation rules
Independent of how a contact arrives — sync, CSV import, or manual profile edit — custom field values can be constrained in Settings → Data validation:
- Required — the field must have a value.
- Length (text, email, url) — minimum and/or maximum character count.
- Range (number) — minimum and/or maximum numeric value.
- Pattern (text, email, url) — a regular expression the value must match, e.g. enforcing a specific customer ID format.
- Custom message — shown instead of a generic error when a rule fails, so the person fixing the record understands what's expected.
Set these up per field from the same fields list you manage in Settings → Contact fields — the data validation screen links straight back there if a field doesn't exist yet. Getting validation right before turning on a sync source avoids a slow trickle of malformed records that only surface as a problem in campaign targeting weeks later.
Pricing
Contact sync sources, run history and data validation rules are part of the core product, included in the flat $50/month instance connection and management fee. There's no additional charge per sync run or per validated field. See billing and plans for the full breakdown of what the fee covers.
Steps at a glance
- Create a sync sourceGo to Settings → Contact sync and create a new sync source, giving it a name and choosing the group it feeds into.
- Choose upsert or replace modePick upsert to add and update matching contacts without touching the rest of the group, or replace to make the group mirror exactly what each sync run sends.
- Set defaultsConfigure the default tags and default opt-in status applied to contacts that arrive through this source, used when the incoming payload doesn't specify its own.
- Copy the API keyThe API key is shown once at creation. Store it securely — it authenticates POST requests to the sync endpoint and can be rotated later if it's compromised.
- Connect your CRM or automation toolPoint Zapier, Make, n8n, or a scheduled script at the generated endpoint, POSTing contact records on whatever cadence suits your CRM.
- Review sync runsCheck Settings → Contact sync for a history of runs per source, including counts and errors, to confirm the integration is working before relying on it.
- Add validation rulesIn Settings → Data validation, set required, length, range or regex rules on custom fields so records failing your data quality bar are rejected or flagged rather than silently stored.
Frequently asked
What is a contact sync source in Arino One?
A configured inbound integration point: a named API endpoint tied to one Arino One group, with a mode (upsert or replace), default tags and default opt-in status. External systems — a CRM, Zapier, Make, n8n, or a cron job — POST contact records to it, and Arino One writes them into that group.
What's the difference between upsert and replace mode?
Upsert adds new contacts and updates existing ones matched by phone number, leaving other members of the group untouched — suitable for incremental feeds. Replace treats each run's payload as the full membership of the group, removing contacts that are no longer present in the latest sync — suitable for a CRM view that should mirror exactly.
How is the sync endpoint authenticated?
Each sync source has its own API key, shown once at creation and stored as a hash server-side. Requests to the public sync endpoint must include this key. If a key is compromised, rotate it from Settings → Contact sync — the old key stops working immediately and a new one is issued.
Can I see whether a sync run succeeded?
Yes. Settings → Contact sync keeps a run history per source, showing when each run happened and its outcome, so you can confirm an integration is delivering correctly before you rely on the data for campaigns.
How do data validation rules interact with contact sync?
Validation rules are defined per custom field in Settings → Data validation — required, min/max length, numeric range, or a regex pattern with a custom message. They apply to the field wherever it's set, including through sync and import, so a field marked required with a pattern will reject a sync payload value that doesn't match rather than silently accepting bad data.
What validation options exist for text versus numeric fields?
Text, email and URL fields support minimum and maximum length plus a regex pattern. Number fields support a minimum and maximum numeric value. Every field type supports marking the field as required and setting a custom error message shown when a value fails a rule.
Apply this to your own deployment
This guide describes decisions we make on live instances. Tell us your channels, systems and region and we will map it to an architecture outline, a provisioning plan and an indicative commercial model — usually within one business day.