Skip to content

Sender + CRM stack

Woodpecker + HubSpot: which campaigns opened deals

Link Woodpecker campaigns to HubSpot deals. Each sync records the steps Woodpecker sent, building the dated touch history that deals are matched against.

7-day free trial • No credit card required • 5-min setup

The question this page answers

Which Woodpecker campaigns are behind the deals in our HubSpot pipeline?

Why Woodpecker and HubSpot do not line up on their own

Woodpecker knows each prospect's email address (and LinkedIn URL when you stored one), the campaign, and when the prospect was last contacted. It has no record of the deal that came later, and its API does not keep a dated log of every email sent.

HubSpot knows the deal, its amount, stage and create date, the contacts and company associated with it, its owner, and the meetings and calls logged against those contacts. It does not hold a campaign-level record of your cold outreach: which campaign, mailbox or LinkedIn account made the last touch before the deal existed.

Depending on how your native sync is set up, Woodpecker activity may also appear on HubSpot contact timelines. A timeline answers "was this person contacted". The question a head of SDR asks sits one level up: per campaign and per rep, how many deals, how much pipeline, how much won.

Woodpecker's API reports each prospect's last contact time, not a log of every email. That is enough to run campaigns, but the history a deal report needs (every step, with its date) is not something you can export and paste next to a list of deals.

How OutboundManager joins Woodpecker and HubSpot

  1. Each Woodpecker lead becomes one contact, identified by the prospect's email address, plus the LinkedIn URL when the prospect has one. Contacts are de-duplicated on email address first, then on LinkedIn URL.
  2. HubSpot deals sync with their associated contacts and companies. A deal is linked to outbound activity through those HubSpot associations, matching the associated contacts to the same people.
  3. When none of a deal's associated contacts carries a touch, the deal's company domain is used as a fallback: any contact at that domain can supply the touch. Free email domains never match.
  4. Each deal is credited to the most recent email sent, LinkedIn invite, LinkedIn message or call to any of the deal's contacts, before the deal was created and no more than 120 days before it. If that touch is a Woodpecker email, its campaign, channel and rep win.
  5. The rep comes from the sender. Woodpecker sends are tied to the SMTP mailbox, and each mailbox is mapped to a rep. Activity with no mapped sender falls back to the campaign owner.
  6. Woodpecker replies are classified from their text as interested, not now, not interested, wrong person, opt-out or auto-reply, and sit in one reply queue.
  7. With write-back on, the source campaign, channel, rep and touch date are written to four OutboundManager properties on the HubSpot deal.

A worked example

You connect Woodpecker today. One prospect's latest step went out last week, and that send is backfilled. Tomorrow their next step goes out and the next sync records it as well. A deal created next month is matched against both, and the later step takes the credit. A second prospect was last contacted five months ago and gets a deal next week: that touch is outside the 120 days, so the deal shows as not outbound.

What you can see once both are connected

  • Woodpecker steps recorded as they go out each hour, so the touch history gets more complete the longer the connection runs
  • Woodpecker inbox replies classified and answered from the reply queue, threaded by Woodpecker from the receiving mailbox
  • Meetings, deals, pipeline and won revenue for every Woodpecker campaign, in the same row as its activity and reply rate
  • Pipeline per rep on the scorecard, next to that rep's Woodpecker activity, replies and positive replies, each against a weekly target
  • Deals with no outbound touch in the window marked as not outbound, so sourced pipeline is not overstated
Campaigns table listing email and LinkedIn campaigns with sends, reply rates, meetings, deals, pipeline and won revenue

Campaign to pipeline: every campaign across tools with meetings, deals, pipeline and won revenue. Demo data.

Set it up

Connect Woodpecker

  1. Make sure the API key add-on is active on your Woodpecker account. Without it, Woodpecker refuses API access.
  2. In Woodpecker, go to Marketplace → Integrations → API keys and create a key.
  3. In OutboundManager, an admin opens Settings → Connections and clicks Add connection.
  4. Pick Woodpecker. Paste the API key. It is checked against the tool automatically; click Save once it shows Key works. The key is stored encrypted.
  5. Open Settings → Reps & senders and give each sender a rep. Suggested matches by email are offered; re-mapping later moves the history with the sender.

Connect HubSpot

  1. In HubSpot, a super admin creates a private app (Settings → Integrations → Private Apps; newer accounts list private apps under Development → Legacy apps).
  2. Give it these scopes: crm.objects.deals.read, crm.objects.contacts.read, crm.objects.companies.read, crm.objects.owners.read and crm.schemas.deals.read. For write-back, also crm.objects.deals.write and crm.schemas.deals.write.
  3. Copy the private app's access token.
  4. In OutboundManager, an admin opens Settings → Connections and clicks Add connection.
  5. Pick HubSpot. Paste the access token. It is checked against the tool automatically; click Save once it shows Key works. The key is stored encrypted.
  6. Map HubSpot owners to reps in Settings → Reps & senders. To write attribution back to deals, turn on write-back on the HubSpot connection; it is off until you do.

After both are connected

  1. Map senders to reps. In Settings → Reps & senders, give every mailbox, LinkedIn account, dialer seat and HubSpot owner a rep. Re-mapping later moves the history with the sender.
  2. Set weekly targets per rep on the same page, so the scorecard shows each number against a target and the overview flags reps under 60% of it.
  3. Optional: turn on write-back on the HubSpot connection. It is off by default and needs the two deal write scopes; it then fills four OutboundManager properties on each attributed deal.

Good to know

  • Woodpecker + HubSpotAttribution is last touch only. There is no multi-touch or first-touch model, and the 120-day window is fixed.
  • WoodpeckerWoodpecker's API has no per-email send events, only each prospect's last contact time. Each sync records every prospect's latest step, which catches each step as it goes out unless two reach the same prospect between syncs; a backfill only sees each prospect's latest step.
  • WoodpeckerA prospect contacted in two or more synced campaigns cannot be attributed to one of them and is skipped.
  • WoodpeckerThe inbox only covers mailboxes connected by the key's owner. LinkedIn steps of multichannel campaigns are not synced.
  • WoodpeckerWoodpecker processes one API request at a time per account, so syncs are slower on large accounts.
  • HubSpotDeal stage history is not synced, only the current stage.
  • HubSpotInbound calls are skipped, and cancelled meetings are removed.
  • HubSpotHubSpot search returns at most 10,000 results per query; long deal backfills are read in slices, which takes a little longer.
  • HubSpotWrite-back only touches deals with an outbound attribution, in a property group named OutboundManager.

Woodpecker + HubSpot questions

Will deals created before I connected Woodpecker be attributed?

Partly. A backfill only sees each prospect's latest step, so an older deal is credited only when that latest contact happened before the deal was created and within 120 days of it. From the first sync on, every step is caught as it goes out.

A prospect is in two Woodpecker campaigns. Which one gets the deal?

Neither. Woodpecker's API cannot say which campaign a contact time belongs to in that case, so that prospect's sends are skipped instead of guessed. Their deal can still be credited to a touch from another connected tool.

Do I have to switch off my existing Woodpecker to HubSpot sync?

No. OutboundManager reads from Woodpecker and from HubSpot separately, each with its own API key, and does the join itself. It does not depend on, replace or interfere with any sync you already run between them.

What does OutboundManager write to Woodpecker or HubSpot?

Nothing in Woodpecker, apart from a reply a person on your team writes and sends from the reply queue. In HubSpot, nothing unless you turn write-back on; then it fills four deal properties in a group named OutboundManager.

See Woodpecker and HubSpot in one set of numbers.

7-day free trial • No credit card required • 5-min setup

Woodpecker and HubSpot are trademarks of their respective owners. OutboundManager is not affiliated with, endorsed by or partnered with Woodpecker or HubSpot.