DealWolf
Account

Help / Zapier and Make

Zapier and Make

Send DealWolf's deals, offers, saved-search matches and packs into your CRM, spreadsheet, Slack or anything else Zapier, Make or n8n can reach, and add leads to DealWolf from your forms. Everything stays inside your own workspace. DealWolf never contacts a seller, agent, buyer or investor, and its events carry no contact details, no listing-site names and no MAO or walk-away, so a Zap can't pass them on. The full detail is in API and webhooks and the OpenAPI spec.

1. Connect

The workspace owner makes a key on the API and webhooks page, named after the tool (for example "Zapier"):

  • Read (Read only: deals, buyers and events) is enough for polling triggers.
  • Read and write (Read and write: also add leads and subscribe webhooks) is needed for instant triggers and the Add a lead action.

In Zapier or Make, use API key (bearer) authentication: the header is Authorization: Bearer dwk_…. To test the connection, call GET /api/v1/me: it answers with the key's name, its scopes, your workspace's name and the limits.

curl -s "$DEALWOLF_URL/api/v1/me" -H "Authorization: Bearer $DEALWOLF_KEY"

2. Triggers

TriggerEventWhen it firesPolling address
New Dealdeal.createdA deal or lead was added to the workspace: by hand, from the map, a bulk stack, the seller form or the API. Carries the deal (no seller or agent contact details).GET /api/v1/events?type=deal.created
Deal Status Changeddeal.stage_changedA deal moved to another pipeline stage (by hand, in bulk, or when a pack moved it to Packed). Carries the deal and the stage it came from.GET /api/v1/events?type=deal.stage_changed
Offer Status Changedoffer.status_changedAn offer in the offer tracker changed status: countered, accepted, rejected, dead or withdrawn. Carries the offer's status before and after, its amount and the last counter. The MAO, walk-away floor and who it went to are never sent.GET /api/v1/events?type=offer.status_changed
New Lead Matchlead.matchedA saved search (buy box) found new homes that match it. Carries the saved search and up to ten homes (address, price, beds, type, map position, whether it scores strong). Which listing site a home came from is never sent.GET /api/v1/events?type=lead.matched
New Packpack.createdA deal pack was made for a deal, from a template or the pack builder. Carries the pack's name and file name, and the deal. A draft: nothing is sent to an investor.GET /api/v1/events?type=pack.created

Each trigger can be set up in either of two ways.

Instant (REST hooks, recommended). When the Zap or scenario is switched on, it subscribes its own address; when it is switched off, it unsubscribes. It needs a read-and-write key.

curl -s -X POST "$DEALWOLF_URL/api/v1/webhooks" \
  -H "Authorization: Bearer $DEALWOLF_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "target_url": "{{bundle.targetUrl}}", "event": "deal.created" }'
# 201: { "data": { "id": "…", "url": "…", "events": ["deal.created"], "secret": "whsec_…" } }
curl -s -X DELETE "$DEALWOLF_URL/api/v1/webhooks/{{bundle.subscribeData.data.id}}" \
  -H "Authorization: Bearer $DEALWOLF_KEY"

Keep the id from the subscribe answer for the unsubscribe. If the tool answers a delivery with 410 Gone, DealWolf stops and removes the subscription by itself. Up to 5 addresses per workspace.

Polling. Zapier or Make asks every few minutes for the newest events of one type. It needs only a read key. Events are newest first and each has a stable id (evt_…), which Zapier de-duplicates on.

curl -s "$DEALWOLF_URL/api/v1/events?type=deal.created&limit=25" \
  -H "Authorization: Bearer $DEALWOLF_KEY"

Samples. To map fields before anything has happened, use the made-up example of each event (Zapier's performList for an instant trigger):

curl -s "$DEALWOLF_URL/api/v1/events/samples?type=offer.status_changed" \
  -H "Authorization: Bearer $DEALWOLF_KEY"

Every trigger, instant or polled, gives the same JSON: id, type, api_version, created_at and data (the deal, offer, saved search or pack).

3. Actions

  • Add a lead: POST /api/v1/deals with a title or an address, and optionally postcode or ZIP, asking price, bedrooms and a contact. Send Idempotency-Key with the tool's own record id so a retried Zap never adds the lead twice.
  • Find a deal: GET /api/v1/deals/{id}, or list with stage, market and strategy.
  • List buyers: GET /api/v1/buyers (names and buy boxes only).

4. Make (and n8n)

The simplest way: add a Webhooks › Custom webhook module in Make (or a Webhook node in n8n), copy its address, and add it on the API and webhooks page with the events you want. Press Send a test there so Make learns the shape. For actions, use Make's HTTP › Make a request module with the bearer header above; lists follow the Link: rel="next" header or next_cursor for the next page.

5. Good to know

  • Each key has its own per-minute limit and monthly quota; every answer says what is left (RateLimit-Remaining). A workspace's keys also share one per-minute limit.
  • A delivery that fails is tried again for about eight hours. The delivery log on the API page shows each try.
  • Deliveries can arrive twice or out of order; use the event id to ignore repeats.
  • Revoking a key stops it at once and switches off the subscriptions it made.
  • Webhooks are signed (DealWolf-Signature); Zapier and Make don't check signatures, but your own receiver should (see how).