diff --git a/docs/content/docs/guides/zapier.mdx b/docs/content/docs/guides/zapier.mdx index 3ba1a47a..525ce909 100644 --- a/docs/content/docs/guides/zapier.mdx +++ b/docs/content/docs/guides/zapier.mdx @@ -15,7 +15,7 @@ It connects over OAuth, so you click Connect and approve access on a Warmbly con 3. You are sent to Warmbly to sign in and approve the permissions the app requests. 4. After approval you are returned to Zapier with the connection ready. The connection is labelled with your organization name and email so you can tell multiple workspaces apart. -The connection requests only the scopes the triggers and actions need (reading and writing contacts, campaigns, mailboxes, the inbox, CRM records, and templates). It does not request billing or team-management access. +The connection requests only the scopes the triggers and actions need (reading and writing contacts, campaigns, mailboxes, the inbox, CRM records, and templates, plus read-only analytics). It does not request billing or team-management access. ## Triggers @@ -56,7 +56,14 @@ Actions create or change something in Warmbly. | Delete Contact Note | Deletes a contact note by id | | Send Email | Sends a one-off email from a connected mailbox | | Reply in Inbox | Sends a reply, optionally threaded into an existing conversation | +| Mark Inbox Emails Seen | Marks one or more inbox messages as read or unread | | Verify Email Address | Runs a deliverability check before you send | +| Update Mailbox | Edits mailbox settings such as daily cap, send gap, or reply-to | +| Delete Mailbox | Disconnects and deletes an email account (stops all sending; irreversible) | +| Start Warmup | Enables or resumes warmup on a mailbox | +| Pause Warmup | Pauses warmup, keeping ramp progress | +| Resume Warmup | Resumes a paused warmup | +| Stop Warmup | Disables warmup and resets ramp progress | | Create Deal | Creates a CRM deal in a pipeline stage | | Update Deal | Moves stage, changes value, or marks a deal won or lost | | Delete Deal | Permanently deletes a deal by id | @@ -71,9 +78,14 @@ Actions create or change something in Warmbly. | Create Reply Template | Creates a reusable inbox reply template | | Update Reply Template | Edits a reply template | | Delete Reply Template | Deletes a reply template by id | -| Delete Mailbox | Disconnects and deletes an email account (stops all sending; irreversible) | +| Render Reply Template | Fills a template with variables and returns the rendered subject and body | +| Log Meeting | Records a meeting and attributes it to a contact | +| Delete Meeting | Deletes a meeting booking by id | +| Create Contact Category | Creates a category for organising contacts | +| Create Mailbox Tag | Creates a tag for grouping mailboxes | +| Create Campaign Folder | Creates a folder for grouping campaigns | -Campaign, mailbox, pipeline, and stage fields use live dropdowns populated from your workspace, so you pick real records instead of pasting ids. +Campaign, mailbox, pipeline, stage, and contact fields use live dropdowns populated from your workspace, so you pick real records instead of pasting ids. Delete and destructive actions (Delete Campaign, Delete Mailbox) are irreversible and run unattended in a Zap, so add them deliberately. @@ -84,9 +96,14 @@ Searches look up a record so a later step can use it. | Search | Finds | |--------|-------| | Find Contact | A contact by exact email | +| Find Deal | A deal by name (and optional status) | +| Find CRM Task | A task by title (and optional status) | | Find Campaign | A campaign by name | | Find Mailbox | A mailbox by email or name | +| Find Meeting | A meeting by invitee or event name | | Find Reply Template | A template by name or subject | +| Get Campaign Analytics | Summary stats for one campaign | +| Get Dashboard Analytics | Workspace-wide stats for a period | Pair a search with an action to build idempotent flows, for example Find Contact, then Create or Update Contact. diff --git a/integrations/zapier/README.md b/integrations/zapier/README.md index fa02c12f..dd948def 100644 --- a/integrations/zapier/README.md +++ b/integrations/zapier/README.md @@ -6,10 +6,12 @@ The customer-facing guide lives at [docs.warmbly.com/guides/zapier](https://docs ## What's inside +Code is organized by **resource**: each file in `src/resources/` owns that resource's triggers, creates, and searches and exports `triggers` / `creates` / `searches` arrays. `src/index.ts` assembles them. To find or add a feature, open the matching resource file (for example `src/resources/deals.ts`). + - **Auth**: OAuth2 authorization-code with rotating refresh tokens. The connection test and label come from `GET /v1/me`. -- **Triggers** (polling): New Contact, New or Updated Contact, New Email Received (Unibox), New Meeting Booked, New Deal, Deal Won, New CRM Task, New Campaign, Campaign Completed, New Mailbox Connected. Plus hidden list triggers that power campaign / mailbox / pipeline / stage / template dropdowns. -- **Creates** (26): contacts (create-or-update, update, delete, add-to-campaign, remove-from-campaign, note create/update/delete), email (send, reply, verify), CRM (deal create/update/delete, task create/update/delete), campaigns (create, update, delete, start, stop), templates (create, update, delete), and delete mailbox. -- **Searches**: Find Contact, Find Campaign, Find Mailbox, Find Reply Template. +- **Triggers** (10 polling + hidden dropdown lists): New Contact, New or Updated Contact, New Email Received (Unibox), New Meeting Booked, New Deal, Deal Won, New CRM Task, New Campaign, Campaign Completed, New Mailbox Connected. Hidden list triggers power the campaign / mailbox / pipeline / stage / template / contact dropdowns. +- **Creates** (38): contacts (create-or-update, update, delete, add/remove campaign, note create/update/delete), email and inbox (send, reply, verify, mark seen), CRM (deal create/update/delete, task create/update/delete), campaigns (create, update, delete, start, stop), mailboxes (update, delete, warmup start/pause/resume/stop), templates (create, update, delete, render), meetings (log, delete), and groups (create category/tag/folder). +- **Searches** (9): Find Contact, Find Deal, Find CRM Task, Find Campaign, Find Mailbox, Find Meeting, Find Reply Template, Get Campaign Analytics, Get Dashboard Analytics. ### Why triggers poll instead of using webhooks @@ -38,7 +40,7 @@ The robust fix for all three is instant webhook triggers (see above). For typica ``` (Zapier shows the exact value under your integration's Authentication settings.) 2. Note the `client_id` (`wmcid_…`) and `client_secret` (`wmcs_…`, shown once). -3. Request these scopes on the app: `read_emails write_emails send_campaigns read_campaigns write_campaigns read_contacts write_contacts bulk_contacts read_unibox write_unibox read_crm write_crm read_templates write_templates` (`write_emails` backs Delete Mailbox; `bulk_contacts` backs Remove Contact from Campaign). +3. Request these scopes on the app: `read_emails write_emails send_campaigns read_campaigns write_campaigns read_contacts write_contacts bulk_contacts read_unibox write_unibox read_crm write_crm read_templates write_templates read_analytics` (`write_emails` backs mailbox update/delete and warmup; `bulk_contacts` backs Remove Contact from Campaign; `read_analytics` backs the analytics searches). ## Environment @@ -69,13 +71,15 @@ npm run push # build + zapier push (deploy a new version) ``` src/ - index.ts App definition (wires triggers/creates/searches) + index.ts App definition (assembles resources + dropdowns) authentication.ts OAuth2 config + GET /v1/me test and connection label lib/ + types.ts shared types (Bundle, ZObject, ResourceModule) client.ts base URLs, scopes, auth + error middleware, helpers poll.ts polling-trigger factory for list endpoints - triggers/ polling triggers + hidden dropdown list triggers - creates/ actions - searches/ lookups + dropdowns.ts hidden list triggers powering dynamic dropdowns + resources/ one file per resource, each exporting triggers/creates/searches + contacts.ts deals.ts tasks.ts campaigns.ts mailboxes.ts + inbox.ts meetings.ts templates.ts groups.ts analytics.ts test/ jest tests ```