Short answers to how Syncdo works, grouped by what you are trying to do. Search, or open a question.
Install it, connect your number, and get it working.
A computer with Google Chrome, and a WhatsApp number that is signed into WhatsApp Web on it. That is all.
Syncdo is a Chrome extension that adds a panel inside WhatsApp Web at web.whatsapp.com. It does not sign you into WhatsApp and it does not replace it. It will not appear in the WhatsApp desktop app, in the phone app, or on any other website.
It works with regular WhatsApp and WhatsApp Business alike. You do not need the WhatsApp Business API, and you do not need a separate business number.
The whole thing takes about five minutes, and you only do it once. The panel appears just after your chat list does, every time you open WhatsApp Web from then on.
If Syncdo cannot read your number from WhatsApp Web, a number field appears with a country selector beside it. Pick your country, then type your number. You can type it without the dialling code, or start with + and type it in full.
The country you pick is what tells Syncdo how to read the digits. If you get the code wrong and have to try again, your country stays selected.
This usually happens because WhatsApp Web had not finished loading, or because this tab is not the one you are signed into.
Four messages are worth recognising.
That code didn't work — check it and retry.
The code was wrong, or a newer one has been sent. Use the most recent email, or choose Resend code.
That number doesn't look right — please re-enter.
Syncdo could not read those digits as a phone number for the country you picked. Check the country first; that is usually the part that is wrong.
We couldn't auto-detect your WhatsApp number — please type it.
WhatsApp Web had not finished loading, or this tab is not the one you are signed into. The number field and country selector appear so you can type it and carry on.
This number is already connected to another Syncdo account. Disconnect it there first, then connect here.
A number can be connected to one Syncdo account at a time. Sign in to the other account and disconnect it there. Syncdo will not move a number between accounts on its own, because that would take a working line away from whoever is using it.
Yes, though most people never need to. On the email step choose Have an API key? Enter it manually and paste it. Keys start with sk_ and live in the dashboard under Settings, then WhatsApp Numbers. The emailed code is quicker.
Four things are worth doing in your first week, and each takes a few minutes.
The dashboard is at app.syncdo.co. It is where you see all your contacts in a table, filter and export them, import a spreadsheet, manage your team, and change settings. Sign in with the same email address you connected the extension with; you get a code by email, not a password.
The panel inside WhatsApp Web is for working one chat at a time. The dashboard is for working the whole list.
What you get on each plan, what the limits are, and how to upgrade.
Three: Free, Essentials and Intelligence.
Free is the CRM itself, with limits on how many contacts and templates you can hold. Essentials removes those limits and turns on the sending tools: reminders, bulk send, cadences and sequences, deals and business groups. Intelligence is everything in Essentials plus the AI features: draft replies, conversation summaries and intent, and the Knowledge Base.
You cannot buy AI on its own. AI is what the Intelligence plan is. Prices and the monthly, quarterly and annual options are on the pricing page.
The free plan does not expire and needs no card. It holds up to 100 leads and 3 saved templates, with lead stages, custom fields, filters, the full lead record, and the panel inside WhatsApp Web. You get the CRM itself on every plan.
Two things are worth knowing before you rely on it. Messages you send through Syncdo on the free plan have a short line added to the end:
_Sent via Syncdo_
That stops on any paid plan. And reminders, bulk send, cadences, sequences, deals and business groups are not available on the free plan. You can still see those screens, and they tell you which plan they need when you try to use them.
Two limits change between plans. On the free plan you can hold 100 contacts and save 3 templates. Both paid plans remove those limits, so on Essentials and Intelligence contacts and templates are unlimited.
Limits apply to your whole workspace, not to each person. The contact limit counts every lead in the workspace, whoever added it.
Hitting a limit never deletes anything.
You can connect one WhatsApp number for every user on your plan. A workspace with three users can connect three numbers. This is not set by which plan you are on, so moving from Essentials to Intelligence does not change it. Adding a user does.
Every workspace can connect at least one number, including on the free plan, so you can always use the line you signed up with.
When you reach your limit, Syncdo tells you the number you have reached:
All 5 of your WhatsApp numbers are connected. Disconnect one you no longer use, or reply to your welcome email to add more.
You can also have more people in your workspace than you have users. That is normal. Someone can join now and be given a user later. If you have agreed a custom arrangement with us, your limit is whatever was agreed.
On every plan, including free: leads, stages, custom fields and filters, and templates with merge fields (up to 3 templates on free).
Essentials and Intelligence add: reminders and follow-ups with your own reminder types; bulk send, including scheduled sends; cadences and sequences; deals, deal stages and the deal pipeline; business groups; and messages sent without the Syncdo line.
Intelligence alone adds: AI draft replies, AI summaries and intent, and the Knowledge Base.
Essentials does not include AI. This is the thing people are most often surprised by, so it is worth saying plainly.
Three things, all on the conversation you are looking at, and all when you ask.
Summaries are generated when you ask for one. Syncdo does not write them in the background, so a conversation you have never asked about will not have one.
You can change plans later from the same page. Changes apply immediately.
When you subscribe to a paid plan you get a 15-day trial first. It takes a card up front, and you can cancel within the 15 days.
One thing to know, because it explains most "why did this stop working?" questions: while your trial is running you get the Intelligence features, whichever plan you chose. If you subscribed to Essentials you will have AI during the trial, and it switches off when the trial ends. Nothing has broken; the trial was more generous than the plan.
If you just want to try Syncdo, the free plan needs no card and does not expire.
All major credit and debit cards, plus UPI for businesses in India.
If you believe you were charged in error, email support@syncdo.co and we will review it in good faith. You can cancel at any time and keep access until the end of the period you have paid for. Any statutory rights that apply to you under local law are unaffected.
Getting your contacts in, importing a list, and keeping them organised.
There are four ways in, and one rule behind all of them: the phone number is the identity.
Syncdo does not add leads on its own. A chat becomes a lead when you add it. Nothing runs in the background importing your contacts, and group chats are never picked up.
Adding a number you already have updates the record you already have. It does not create a second one and it does not replace the first.
There is one case where Syncdo refuses instead. If the number already belongs to someone else in your workspace, you will see:
That phone number is already a lead in this workspace, assigned to someone else. Ask them to reassign it to you.
Syncdo will not move a colleague's lead to you on its own, and it does not show you anything about that lead. Someone with permission to reassign leads can hand it over.
Rows that repeat the same number inside your file are collapsed before anything is sent. Importing does not send anything to anyone; it only creates lead records. On the free plan the import stops at your contact limit and tells you how many were over it.
A number without a country code is read with your workspace's default country. A number with one works with or without the +: +33 6 12 34 56 78, 33 6 12 34 56 78 and 0033 6 12 34 56 78 are the same number. If a number cannot be read, that row is not imported, and the result says how many and why. If your list is a Google Sheet, Google Sheets treats a leading + as the start of a formula: type an apostrophe first ('+33 6 12 34 56 78), or set the phone column to Plain text (Format, then Number, then Plain text) before you type the numbers.
A batch is which arrival a contact came from. Every CSV import is a batch, named when you import it. Every inbound webhook is a batch too, named after the webhook, and it keeps growing as enquiries come in. A contact you added by hand has no batch.
You can filter your contacts by batch, see every batch under Imports on the Contacts page, and remove a batch that should not have been imported.
A batch is different from a contact's source. Source is what kind of contact they are — a referral, a cold list — and you set it yourself. Batch is which file or webhook they arrived in.
Give it the same batch name and the contacts are added to that batch rather than a new one; the batch's count grows. Give it a different name and you get a second batch.
Either way, a contact whose number is already in your list is not duplicated. Their details are updated the way you chose for each field — Replace if empty fills only blank fields, Overwrite replaces them — and they keep the batch and owner they originally had. The result tells you how many were new and how many were already in your list, so the batch count does not look wrong to you.
New rows in a Google Sheet become leads in Syncdo on their own: rows from Facebook Lead Ads' Google Sheets connection, a Google Form, or anything else that adds rows to a sheet. Google Sheets is on the Essentials and Intelligence plans, and the owner or an admin sets it up.
From then on Syncdo checks the sheet every two minutes and adds new rows at the bottom as leads.
Only the files you pick. When you connect, Google asks for permission to see and edit only the specific Google Drive files you use with this app. Syncdo cannot open any other file in your Drive, and it never writes to your sheet.
Disconnect Google removes Syncdo's access at Google. Your sheets stay listed but nothing is imported until you connect again, and the leads already imported stay.
Each sheet in Settings, Google Sheets has its own buttons.
To use a different tab, remove the sheet and add it again. Its leads stay.
Only an owner or admin with permission to bulk-delete leads can do this. Deleting a batch removes the leads, not just the label.
Three things organise your leads once they are in. All three work on every plan, including free.
To hand a lead to a teammate, open the contact in the dashboard and pick their name from the menu next to its stage. Only people allowed to reassign leads see that menu. The lead moves to that person and its history stays with it: messages, notes and activity are unchanged, and an open deal moves with the lead.
Deal stages are a separate thing and easy to confuse with lead stages. Lead stages track the person. Deal stages track a specific piece of business with them. Deals need Essentials or above.
The field appears on every lead straight away, in the panel and in the dashboard, and you can filter by it, edit it in bulk, and map a spreadsheet column to it when you import. You can hide a field with the switch beside it, and reorder the list with the arrows. Deleting a field removes its values from every contact, so Syncdo asks first.
A field cannot take the name of one Syncdo already has, such as Assigned To, Name, Phone, Lead Stage, Created or Reply, or the name of another field: Lead Fields says so and asks for a different name. A field made before this check with such a name is listed at the top of Lead Fields. Filters show it as “(custom field)” next to the built-in one, and renaming it keeps its values.
Each field has a key as well as a name; the key is what you type into a template to merge that field in. It is shown beside the field in the list.
Open the contact and choose the pencil beside their number, then type the right one and confirm it.
This works for a contact that has no history yet — a number typed off a business card, or an import with the wrong mobile. If the contact already has messages, deals or notes against it, Syncdo tells you what is blocking the change instead of doing it, because those records are tied to the number. In that case add the correct number as a new contact.
Saved filters appear in the filter bar and in the Syncdo panel inside WhatsApp Web; it is one list, so a filter you save in one place is there in the other. Bulk send and cadences use the same filters to choose who to message.
To find contacts with no batch, pick Batch and choose (No batch), or use the "is empty" option.
Where the new filters are switched on (they are being released gradually), Contacts has a filter bar instead: quick filters with counts across the top (My leads, Needs reply, Follow-up due today, Hot, Quoted no reply 3 days, New this week), **+ Filter** to search for a condition by name, and each condition shown as a sentence you tap to change. Saved filters are under **Saved** in the same bar, and the filter stays in the page's address, so going back to Contacts shows the same list. Pipeline has the same bar; All deals has one with Open, Won, Lost and Mine and the deal's own conditions (stage, value, owner, dates); and Reminders has one with Overdue, Today, Done and Mine and the reminder's own conditions (type, owner, dates).
No. Syncdo only stores conversations with contacts you have added as leads. Your personal chats, group chats, and any contact you have not added are never read or stored.
For the contacts you have added, storing the conversation is what lets you search your message history, filter leads by what they asked about, and keep a record of every customer conversation in one place. We never use your messages to train AI models, and we never sell or share your data. You can delete any lead, along with its conversation history, at any time.
Saved replies, merge fields, files, reminders, and sending to more than one person.
Templates are created in the Syncdo panel inside WhatsApp Web, so the extension needs to be installed and connected first.
Your library starts empty; Syncdo does not ship sample templates. The dashboard can show your templates, send them and delete them, but you write and edit them in the panel. The free plan holds 3 templates; paid plans remove the limit.
These are all of them. There is one renderer behind the preview and the send, so what you are shown is what goes out.
For {{custom:key}} you need the field's key, not its name. Both are shown under Settings, then Lead Fields. A field named "GST Number" might have the key gst_number, and that is what goes in the template.
A merge field with no value comes out as nothing at all. If a customer has no company saved, you get a gap in the sentence rather than the words {{company}}, so write sentences that still read correctly when a field is empty. The two appointment fields only work on a message scheduled around an appointment; anywhere else Syncdo will not send a message with a missing time in it.
Templates are grouped into categories, shown as a row of chips above the list. The gear opens Manage categories, where you create one by typing its name, and can rename, reorder and remove them.
Removing a category moves its templates rather than losing them; you choose where they go. Renaming a category to a name that already exists merges the two, and you cannot undo it, so Syncdo tells you the target name and how many templates will move before anything happens.
There is also a search box, and it looks at both the template name and the message text. If you want the message with your bank details, type part of the account detail rather than guessing the category.
Yes. Any template can carry files, like a catalogue PDF, product photos or a price list. You can attach up to 10 attachments per template, and each file can be up to 10MB.
Sent from the panel, a template with files arrives as one WhatsApp message: the files, with the template text as the caption on the first one.
Four places, and they do not all handle files.
On the free plan, messages sent through Syncdo have a short line added at the end. It stops on any paid plan.
The dashboard on your phone has no connection to your WhatsApp session, so it hands the message to WhatsApp through a link. A link can carry text; it cannot carry a file.
So a template with a file attached appears in the list on your phone dimmed and not selectable, with the reason on it:
Unavailable — sends a file, which a link cannot carry
It is shown rather than hidden so you know it is still there. Send it from the panel in WhatsApp Web, or from a bulk send or a cadence, and the files go with it.
For a text template, the flow is: pick the template, Syncdo fills in the merge fields for that contact and shows you the finished message, you confirm, and WhatsApp opens with it ready to send. You always see the real message before WhatsApp opens. Nothing sends straight from a tap.
Reminders need Essentials or above.
When it is due, the reminder shows on the contact and in your follow-ups list. You close it as done, no-show or cancelled, so you have a record of what happened rather than just a tick.
You set up your own reminder types under Settings, then Reminder Types.
Bulk send needs Essentials or above, and runs from the panel inside WhatsApp Web.
Syncdo sends one message at a time, from your own number, with a random pause of 30 to 90 seconds between each, and fills in the merge fields for each person so no two messages are identical. A batch is at most 40 people, and each number sends at most 150 messages through Syncdo in a day. You can stop a batch partway, and retry the ones that failed.
WhatsApp Web has to stay open while it runs; the sending happens in your browser.
Adding people, roles, and connecting more than one number.
Every paid plan is priced per user, and each user can connect one WhatsApp number. If you have bought more users than you have assigned, choose Assign licence beside a person to give them one. Buying more users is done under Settings, then Billing. You can have more people in your workspace than you have paid users; someone can join now and be given a user later.
There are four: owner, admin, manager and rep.
An owner can do everything, including billing and removing people. An admin can manage the team and settings but not remove people. A manager runs a team's leads. A rep works their own leads. What each role can see and change is set out under Settings, then Permissions, and you can adjust it there.
A rep only ever sees leads assigned to them. That is why some filters and controls — like Assigned To — do not appear for a rep at all.
Each WhatsApp number belongs to one user, so a second number means a second user.
The second number is then a line in your workspace, with its own leads, and both of you see the shared contact list according to your roles. A number can only be connected to one Syncdo workspace at a time.
Your line is now the new number. Your leads, templates and settings are unchanged. If the new number is connected to another Syncdo workspace, disconnect it there first.
In the dashboard or the Android app, open Settings, then My account.
Delete my account removes you: your access to the workspace, your sign-in, your work phone, your notification subscriptions and your blocked numbers. It happens at once. The leads you worked on, and the notes and calls you logged, stay with the business, because they are its records; an owner can hand your leads to someone else. If you belong to another workspace, your sign-in stays for that one.
If you are the workspace's only owner, you cannot delete your account on its own. Delete the workspace, or make someone else an owner first in Users & Roles.
Delete this workspace is for owners. You type the workspace's name to confirm, and the workspace is deleted 30 days later, with everything in it. Until then it keeps working, every page shows the date, and any owner can cancel. A paid subscription is cancelled before the deletion.
If you cannot sign in, email support@syncdo.co from your account's address and ask for the deletion. The page syncdo.co/delete-account explains what is deleted and what is kept.
Fixes for the problems people hit most often.
Six things cause this. The first two account for most of it.
Reinstalling the extension is rarely the fix, and it is the first thing most people try. It clears your local settings and leaves the real cause in place.
If Syncdo cannot reach its server, the small tab at the edge of the window turns red and a banner appears:
⚠ Can't reach server at …
That is a connection problem between your browser and Syncdo. Your account is fine and nothing is lost. Check your network first, then the server address in the extension popup.
Four reasons. The first one is normal.
Because the third one depends on what your browser has loaded, a chat that will not sync for you may sync perfectly for a colleague. It is per person and per session, so a lead never gets permanently stuck.
None of this recovers a conversation Syncdo never saw. Syncdo reads your chats through your own WhatsApp Web session, so a chat that was never open in a browser with Syncdo running has nothing stored to recover.
Most of the time sync is working and saying so quietly. Three things explain nearly every report.
Syncdo will not start a big backfill on its own. When more than 25 chats are waiting it stops and asks you first, because a first backfill takes minutes and visibly works through every chat. You will see:
… chats need syncing — use "Sync history"
Nothing has failed. The Sync history button is in the Syncdo panel. Click it and the sync runs.
Automatic sync runs once each time the page loads. It starts a few seconds after WhatsApp Web opens, so WhatsApp can finish loading first, and it does not run again in the same session. Reloading the page gives you a fresh one.
"Nothing to sync" is usually true. Syncdo only queues chats that have had activity since the last time it went through them. A lead nobody has messaged is already done. When a new message arrives that chat goes back in the queue straight away.
When a run finishes, Syncdo accounts for the difference between your total leads and the number it worked through: how many were already up to date, how many were not open in WhatsApp, how many were blocked, and how many have no WhatsApp conversation at all. If one of those numbers looks wrong, quote it when you email us. Sync reads your browser, so WhatsApp Web has to stay open while it runs, and closing the tab stops it.
Click the Syncdo icon in your Chrome toolbar. The popup shows your workspace name, your name, and the number you are connected with, and it will be in one of four states.
The mismatch warning reads:
⚠ Different WhatsApp account — This browser is logged into …, but Syncdo is connected to …. Nothing from this account is being saved.
This is the usual cause of "my chats are not being saved" when everything else looks fine. It happens when you sign WhatsApp Web into a second number, or use a browser profile connected to a different Syncdo account. Syncdo does not switch itself to the new number, because that would move your leads onto a line you might have opened by accident. Sign WhatsApp Web back into the right number, or use Reconnect in WhatsApp Web to connect this one on purpose.
If your workspace name is wrong rather than your number, you are signed into a different Syncdo account. Reconnect from the panel using the email address that owns the workspace you expect.
Syncdo works inside WhatsApp Web in your browser, the same way you would use WhatsApp in any browser tab. There are no bots and no unofficial channels. Everything you send goes out through your own WhatsApp Web session, one message at a time, and you send each one.
When you send to many people, Syncdo paces it for you: a random pause of 30 to 90 seconds between messages, each one filled in with that person's own details so no two are identical, a longer pause after every couple of dozen, and at most 150 messages per number per day through Syncdo. When a day's count reaches 120 it warns you; at 150 it pauses the batch until tomorrow. Those numbers are there to keep your usage looking like a person, because that is what it is.
Two things Syncdo cannot do for you. Do not use a brand-new number for outreach; new numbers get flagged fast on WhatsApp regardless of the tool, so use an established number with real conversation history. And message people who know you: your own contacts, who expect to hear from you.
Syncdo sends your messages through WhatsApp Web itself. Many other WhatsApp extensions, such as bulk senders and automation tools, do the same. When two of them work on the same WhatsApp Web page they can get in each other's way, and a message fails to go.
When Syncdo spots another extension like that, the panel may tell you after a send fails:
Another WhatsApp extension is active and may interfere with sending.
It never appears after a send that worked. Click × to hide it until you reload WhatsApp Web.
Syncdo never switches another extension off and never reads it. Which one to keep running is your choice.
One person answers these, so the quickest thing you can do is answer the questions we would ask:
Email support@syncdo.co. We read every message personally.
Sending enquiries into Syncdo from a form, a portal or an automation tool — and, where it has arrived, the API and outbound webhooks.
In Syncdo, go to Settings, then Inbound Webhooks. You need to be an owner or an admin. Type a name you will recognise later — "Website contact form", "IndiaMART" — and choose Create.
The URL is shown once, and only once, with a Copy button beside it. Choose Copy and keep it somewhere safe: Syncdo stores it hashed and cannot show it again. If you did not copy it in time, choose Rotate in the same screen to get a new one; the old URL keeps working for 7 days after a rotation, so you have time to swap it over.
Treat the URL like a password. There is no API key and no header to set — anyone who has the URL can create leads in that workspace. Keep it server-side, never in front-end code a visitor can read.
Every lead that arrives through a webhook carries the webhook's name as its batch, so you can filter for them.
A JSON POST to the URL. Only phone is required; everything else is optional.
Values longer than the limit are trimmed, not rejected. Anything outside this list is not stored; it is listed back to you as ignored_fields in the response, up to 25 names, so you can see what did not land while you are wiring the form up. A key under fields that is not one of your lead fields is listed the same way, as fields.key. A value that does not fit its field, such as text in a number field, is left out and listed in rejected_fields with the reason. The lead is still saved with everything else, and a blank value never erases one already there.
If your form collects numbers in national format and you send neither a + nor a country, Syncdo falls back to the workspace's default country, which may not be right for that customer.
The webhook takes a JSON POST, so you can fire a test from a terminal with curl before you wire up a real form.
First copy your URL from Settings, then Inbound Webhooks. It looks like this, with your own secret on the end:
https://api.syncdo.co/api/inbound/YOUR_WEBHOOK_SECRET
Then send a test lead. Set the content type to application/json and put the fields in the body:
curl -X POST "https://api.syncdo.co/api/inbound/YOUR_WEBHOOK_SECRET" -H "Content-Type: application/json" -d '{"phone":"+91 98765 43210","name":"Rahul Sharma","email":"rahul@example.com","company":"Metro Traders","message":"Is this still available?"}'
A new lead comes back like this, with the phone number as Syncdo stored it:
{"ok":true,"phone":"919876543210","created":true}
Open the dashboard and the lead is there, filed under the webhook's name, with the message saved as a note. Only phone is required, so you can drop every other field. Send the same body again within a day and Syncdo treats it as a repeat and creates nothing — change the phone number to make a second test lead.
A second lead is never created. Syncdo finds the existing one and updates it, and the response comes back with created: false.
Choose it when you create the webhook, or later with Edit under Settings, then Inbound Webhooks. There are three choices.
Leads are handed out in turn, not at random, so nobody gets four in a row by chance. Only active teammates get leads: if someone is deactivated, they are skipped and the others share their turn. Under If none of them is active, assign to, pick who should get the lead when everyone chosen is inactive. If you leave it as the workspace owner, or that person is inactive too, the owner gets it.
Each webhook also shows when it was added, how many leads it has received, when the last one arrived and who set it up. If the last lead suddenly looks weeks old, check the form that sends to it.
The same choices appear when you import a CSV, and they work the same way.
Form tools and portals retry. A timeout on your side does not mean the request did not arrive, so the same submission often gets sent twice. Sending your own reference in id lets Syncdo tell a redelivery from a new enquiry.
Send an id if your tool has one. A retry is then free of side effects for as long as any tool would keep retrying.
A new lead returns 200 with ok: true, the phone as Syncdo stored it, and created: true. A redelivery returns 200 with duplicate: true. Every failure returns ok: false and an error string.
On any error the lead was not created, so a retry cannot produce a duplicate. If you send an id, that holds even for a request that timed out after Syncdo had accepted it.
If a URL is exposed — pasted in a shared document, committed to a repository — choose Rotate under Settings, then Inbound Webhooks. You get a new URL, shown once, and the old one keeps working for 7 days so nothing breaks while you update it.
To stop a webhook, choose Turn off. It then refuses new submissions but keeps everything else — its people, their shares, and its place in the rotation — and you can turn it back on later. There is no delete: a webhook is turned off, never removed, so its history and its place in the rotation are never lost.
To change a webhook, choose Edit. You can rename it, change who gets its leads, and change what happens when a number is already a lead. Changes apply to leads that arrive from now on; leads already in Syncdo keep their owner, source and batch. Renaming changes the source and batch that new leads get.
Syncdo is not a native app inside Zapier, Make or Pabbly, and it does not need to be. Each of them has a generic action that sends a web request, and you point that at your webhook URL.
Syncdo has no field-mapping screen of its own. You choose which of your fields go where inside the tool: map one field to phone, which is required, and any of name, email, company, city, state and message. Send the phone with a leading + and its country code. If your tool has its own unique id for the record, pass it as id, so a retry after a timeout does not create a second lead.
Keep the URL out of anything a visitor can read — it is the only credential the webhook has.
Where the Syncdo API has been switched on (it is being released gradually), you can also use an API key from Settings, then API & webhooks: the tool's HTTP action posts to https://api.syncdo.co/v1/leads with the key in the Authorization header, and it can also find leads, add notes, move stages and work with deals. Syncdo does not yet have its own app inside Zapier, Make, Pabbly, Integrately or n8n.
The Syncdo API is being released gradually, one workspace at a time. Where it has arrived, the workspace owner finds it under Settings, then API & webhooks; it is on the Essentials and Intelligence plans, not Free. If the page is not there, the API has not reached that workspace yet — there is nothing to switch on.
Make one key for each tool you connect, named after it — "Zapier", "Website", "n8n". The key starts with sya_ and is shown once, with a Copy button: Syncdo keeps only a fingerprint of it and cannot show it again. If it is lost, make a new key and revoke the old one.
When you make a key you also choose who gets the leads it creates and what happens when the number is already a lead — the same two choices as an inbound webhook or a Google Sheet. The key's name becomes the source and batch of those leads. Edit changes all three later; changes apply to leads that arrive from then on.
Pause stops a key until you resume it. Revoke stops it for good. Either way the leads, notes and deals it created stay, and each lead's history says "API: <key name>" for every change the key made.
A key can read and change every lead in the workspace, so only the owner can make one. Keep it on a server, never in a web page.
Requests go to https://api.syncdo.co/v1 with the header Authorization: Bearer followed by your key. The full reference is at syncdo.co/developers/api.
Every error comes back with ok: false, a code in error and a sentence in message. A lead field the workspace does not have is refused by name rather than stored where nobody would see it.
Each kind of request is limited to 120 a minute per workspace, shared by all its keys; creating leads is also limited to 60 a minute per key. A busy tool gets 429 with Retry-After and should wait that long.
Where the API has been switched on, the owner adds a webhook under Settings, then API & webhooks: a name, an https URL, and the events to send — a new lead, a lead's stage changing, a deal won, a deal lost, a reminder falling due. Syncdo posts each event to the URL as JSON, usually within a minute. Only events that happen after the webhook is added are sent, and leads from a CSV import are not sent as new leads.
"Send test event" posts a sample at once and shows whether it arrived. Each webhook's Deliveries list shows every event sent, whether it arrived, how many attempts it took and the last error, kept for 30 days; Resend sends any of them again.
Your URL should answer with a 2xx within 10 seconds. If it does not, Syncdo tries again after 1 minute, 5 minutes, 30 minutes, 2 hours, 6 hours and 12 hours. A webhook that fails 20 times in a row over at least a day is turned off, and the page says why; an answer of 410 Gone turns it off at once. Turn on starts it again, from then on.
Pausing a webhook cancels the deliveries waiting to be retried (Resend brings any back) and nothing that happens while it is paused is sent. Deleting it deletes its delivery list too. Edit changes the name, URL and events from the next delivery.
Each webhook has a signing secret, starting whsec_, shown once when it is added. "New secret" makes another, also shown once; the next delivery is signed with the new one, so update your receiver straight away.
Every delivery carries a Syncdo-Signature header that looks like t=1791364500,v1=5d2a… . Take the number after t=, a full stop, and the request body exactly as it arrived, and compute HMAC-SHA256 of that with your secret, as hex. It must equal the part after v1=. Refuse a t more than five minutes old, so an old delivery cannot be replayed.
The headers also carry Syncdo-Event (the event's type) and Syncdo-Event-Id. The event id is the same on every retry, so if you see one twice, you have already handled it. Code for Node.js and Python is in the API reference at syncdo.co/developers/api.
Syncdo does not connect to Facebook directly. Facebook Lead Ads reach Syncdo the same way any other tool sends a lead: through something that forwards it to your webhook URL.
There are two common routes.
Facebook usually gives you the phone number with its country code already, which is what Syncdo wants. If you type numbers into a Google Sheet yourself, put an apostrophe before a leading + ('+33 6 12 34 56 78) or set the phone column to Plain text (Format, then Number, then Plain text), because Google Sheets otherwise treats the + as the start of a formula. Pass the lead's id from the tool if it has one, so a retry does not double up. Every lead that arrives this way is filed under your webhook's name, so you can filter for your Facebook enquiries later.
We read every email personally.
✓ Free plan ✓ No credit card to start ✓ Setup in 5 minutes