Contacts
Two-way contact synchronization
WinFactor auto-populates contacts from submissions; these endpoints keep them in sync with your CRM.
GET /contacts
Query params: email (exact match — the lookup you want before deciding to create), limit, cursor. Items:
{
"id": "k44…", "name": "Jane Doe", "email": "[email protected]",
"phone": "+31 6 …", "companyName": "Doe BV",
"address": null, "postalCode": null, "city": null, "country": null,
"isStarred": false, "submissionCount": 3, "externalRef": "hubspot:contact:3314",
"lastUsedAt": 1781100202000, "createdAt": 1770000000000, "updatedAt": 1781100202000
}POST /contacts
Upsert by email — idempotent, safe to fire on every CRM change:
curl -X POST -H "Authorization: Bearer $WF_API_KEY" -H "Content-Type: application/json" \
https://app.winfactor.app/api/v1/contacts \
-d '{ "email": "[email protected]", "name": "Jane Doe", "externalRef": "hubspot:contact:3314" }'{ "email": "[email protected]", "name": "Jane Doe", "companyName": "Doe BV",
"phone": "+31 6 …", "externalRef": "hubspot:contact:3314" }Returns 201 with "created": true for new contacts, 200 with "created": false for updates.
GET /contacts/{id} · PATCH /contacts/{id}
PATCH accepts any subset of: name, phone, companyName, address, postalCode, city, country, externalRef.