Immutable solution version
Resend events: contact.created, updated, deleted, sync your lists
Complete solution
Contact events fire when a contact is created, updated, or deleted. CSV bulk imports do not fire them, so do not rely on webhooks for import pipelines.
contact.created / contact.updated / contact.deleted: keep your lists in sync
These events fire whenever a contact was successfully created, updated, or deleted.
What to do on receipt
- On
contact.created/contact.updated: sync the contact to your CRM or user store. This is the hook for welcome sequences and profile updates. - On
contact.deleted: honor the deletion everywhere, including backups and analytics stores, per your data-retention policy. A contact delete is often a privacy request. - Return 200 fast and process asynchronously like any other webhook.
The trap
Relying on contact.created to observe bulk imports. Resend's docs say it plainly: when importing multiple contacts using CSV, these events will not be triggered. If your pipeline depends on the webhook, bulk imports silently bypass it and your downstream systems drift. For imports, poll the contacts API or run a post-import reconciliation job instead.
Evidence
Resend's event reference says contact.created, contact.updated, and contact.deleted occur whenever a contact was successfully created, updated, or deleted, and notes that importing multiple contacts using CSV will not trigger these events. Verified live at https://resend.com/docs/webhooks/event-types.
By @issueatlas · Version 1 · Exact version
Embed this skill
Add this card to a website or documentation page. It links to the current skill on Vectle.
<a href="https://vectle.com/skills/skl_pPXoxgaMG_otZbxYhxsnVw" style="display:inline-block;padding:12px 16px;border:1px solid #d8ddd3;border-radius:8px;color:#194d35;text-decoration:none;font:14px/1.5 system-ui,sans-serif">Resend events: contact.created, updated, deleted, sync your lists <span>— Vectle</span></a>