Skill Tracer
Skills › Knowledge Work Plugins › growth-pulse › data_sources.md

data_sources.md

113 lines · small-business/skills/growth-pulse/reference/data_sources.md at 2574e29

Open on GitHub

Most marks come from matching words in the file, so treat them as pointers.

1# Data Sources
2
3Which connector answers which part of the pulse. Pull in one parallel batch.
4
5---
6

Data Sources

Which connector answers which part of the pulse. Pull in one parallel batch.


Raw lines 1 to 6
7## HubSpot — the funnel
8
9The spine of this skill. Without it, funnel conversion is unavailable and the pulse leans on revenue trend instead.
11| View | What to pull |
12|---|---|
13| Funnel conversion | Deals by stage, with create and close dates |
14| Lead volume | Contacts created in period, with source property |
15| Lead source mix | Contacts grouped by original source |
16| Win rate | Deals closed-won divided by deals resolved |
17| Cycle time | Median days from create to close, won deals only |
18| Stalled deals | Deals with no activity in 14+ days, or close date in the past and still open |
19| Response speed | Time from contact creation to first logged activity |
21**Careful with deal value.** It is a forecast, not revenue. Never present weighted pipeline as money earned.
23**Fallback:** a CRM deal export as CSV gives the same funnel views.
25---

HubSpot — the funnel

The spine of this skill. Without it, funnel conversion is unavailable and the pulse leans on revenue trend instead.

ViewWhat to pull
Funnel conversionDeals by stage, with create and close dates
Lead volumeContacts created in period, with source property
Lead source mixContacts grouped by original source
Win rateDeals closed-won divided by deals resolved
Cycle timeMedian days from create to close, won deals only
Stalled dealsDeals with no activity in 14+ days, or close date in the past and still open
Response speedTime from contact creation to first logged activity

Careful with deal value. It is a forecast, not revenue. Never present weighted pipeline as money earned.

Fallback: a CRM deal export as CSV gives the same funnel views.


Raw lines 7 to 26
27## Revenue sources
29| Source | Best for |
30|---|---|
31| QuickBooks | Realized revenue — the number that ties to the books |
32| Stripe, PayPal | Settlement timing, fees, refunds, subscription revenue |
33| Square | In-person and per-location revenue |
34| Shopify | Order counts, SKU-level revenue, repeat purchase rate |
36**Pick one as the revenue source per pulse and say which.** When QuickBooks is connected, it wins — processors and storefronts then supply channel and product splits only. Summing across them double-counts, sometimes by more than double.
38**Then guard against double-counting inside that one source.** The QuickBooks sales-by-customer summary emits a parent summary row and a separate total row for the same customer whenever sub-customers or jobs exist. Both carry the same amount, and the report's own top-customer list contains both. Filter rows whose metadata type marks them as a total before ranking customers or computing concentration; otherwise one customer occupies two slots in the ranking and the concentration figure is inflated.
40---

Revenue sources

SourceBest for
QuickBooksRealized revenue — the number that ties to the books
Stripe, PayPalSettlement timing, fees, refunds, subscription revenue
SquareIn-person and per-location revenue
ShopifyOrder counts, SKU-level revenue, repeat purchase rate

Pick one as the revenue source per pulse and say which. When QuickBooks is connected, it wins — processors and storefronts then supply channel and product splits only. Summing across them double-counts, sometimes by more than double.

Then guard against double-counting inside that one source. The QuickBooks sales-by-customer summary emits a parent summary row and a separate total row for the same customer whenever sub-customers or jobs exist. Both carry the same amount, and the report's own top-customer list contains both. Filter rows whose metadata type marks them as a total before ranking customers or computing concentration; otherwise one customer occupies two slots in the ranking and the concentration figure is inflated.


Raw lines 27 to 41
42## Ad platforms
44| Source | What to pull |
45|---|---|
46| TikTok Ads | Native connector. `report_integrated_get` at campaign level for the last 7 days and the prior 7: spend, impressions, clicks, results, cost per result. `advertiser_info_get` first to confirm the account. Same reads and traps as `ad-manager` (`../../ad-manager/SKILL.md`); read there before the first call |
47| Google Ads | Not wired into this skill — ask for a CSV export. The connector itself lives on `ad-manager` |
49**Attribution honesty.** Ad platforms report conversions they claim. The CRM reports leads it received. These rarely agree, and the gap is not a bug. Report both and name the gap rather than picking the flattering one.
51---

Ad platforms

SourceWhat to pull
TikTok AdsNative connector. report_integrated_get at campaign level for the last 7 days and the prior 7: spend, impressions, clicks, results, cost per result. advertiser_info_get first to confirm the account. Same reads and traps as ad-manager (../../ad-manager/SKILL.md); read there before the first call
Google AdsNot wired into this skill — ask for a CSV export. The connector itself lives on ad-manager

Attribution honesty. Ad platforms report conversions they claim. The CRM reports leads it received. These rarely agree, and the gap is not a bug. Report both and name the gap rather than picking the flattering one.


Raw lines 42 to 52
Names a skill ad-manager :46
53## Mailchimp — email as a channel
55| View | What to pull |
56|---|---|
57| Campaign return | Campaign analytics with revenue attribution — opens, clicks, and attributed revenue per campaign |
58| Channel trend | E-commerce analytics, for the email-attributed slice of revenue |
59| Lead volume | Audience-growth analytics — subscribers added and lost in the period |
61**Same attribution honesty applies.** Mailchimp's attributed revenue is Mailchimp's claim,
62sitting next to the ad platform's claim and the CRM's record. Report it as the email
63channel's own number and name the gap. Never fold it into a single blended figure.
65**Mailchimp is read-and-draft only in this plugin.** It has no send path here, and its
66campaign planner will refuse a single-campaign request — it produces multi-channel plans
67only. Treat the audience list itself as unavailable for export unless a call actually
68returns it.
70**An auth or login error is connector health, not missing data.** If Mailchimp calls fail
71with an expired login or authorization error, the appendix line should say "Mailchimp:
72connection needs to be re-authorized — reconnect it in Connectors and rerun," not "no
73email data." Name the fix, then continue the pulse without the email views. Before
74writing that line, check the error did not come from the plugin's own registration
75(`small-business:intuit-mailchimp`, the manifest key) while the owner's Mailchimp entry is live — if the owner's
76entry works, use it and say nothing about reconnecting
77(`../../../shared/connector-neutrality.md`, "One connector, two registrations").
79---

Mailchimp — email as a channel

ViewWhat to pull
Campaign returnCampaign analytics with revenue attribution — opens, clicks, and attributed revenue per campaign
Channel trendE-commerce analytics, for the email-attributed slice of revenue
Lead volumeAudience-growth analytics — subscribers added and lost in the period

Same attribution honesty applies. Mailchimp's attributed revenue is Mailchimp's claim, sitting next to the ad platform's claim and the CRM's record. Report it as the email channel's own number and name the gap. Never fold it into a single blended figure.

Mailchimp is read-and-draft only in this plugin. It has no send path here, and its campaign planner will refuse a single-campaign request — it produces multi-channel plans only. Treat the audience list itself as unavailable for export unless a call actually returns it.

An auth or login error is connector health, not missing data. If Mailchimp calls fail with an expired login or authorization error, the appendix line should say "Mailchimp: connection needs to be re-authorized — reconnect it in Connectors and rerun," not "no email data." Name the fix, then continue the pulse without the email views. Before writing that line, check the error did not come from the plugin's own registration (small-business:intuit-mailchimp, the manifest key) while the owner's Mailchimp entry is live — if the owner's entry works, use it and say nothing about reconnecting (../../../shared/connector-neutrality.md, "One connector, two registrations").


Raw lines 53 to 80
81## Sentiment
83| Source | What to pull |
84|---|---|
85| Public reviews | Recent Google, Yelp, and industry-site reviews via web research |
86| PayPal, Stripe | Dispute and chargeback counts and reasons |
87| Gmail or Microsoft 365 | Inbound complaints, cancellation requests, refund asks |
88| HubSpot | Ticket volume and themes, if support runs through the CRM |
90Sentiment is the leading indicator in this pulse. It moves before revenue does, which is exactly what makes it worth including.
92---

Sentiment

SourceWhat to pull
Public reviewsRecent Google, Yelp, and industry-site reviews via web research
PayPal, StripeDispute and chargeback counts and reasons
Gmail or Microsoft 365Inbound complaints, cancellation requests, refund asks
HubSpotTicket volume and themes, if support runs through the CRM

Sentiment is the leading indicator in this pulse. It moves before revenue does, which is exactly what makes it worth including.


Raw lines 81 to 93
94## The uploaded-file path
96A first-class mode, not a degraded one. Many owners in this segment have no clean connector on the growth side at all.
98What to ask for, in plain language:
100- "Export your deals from the CRM" — funnel conversion
101- "Export your sales report for the month" — channel and product performance
102- "Download the campaign performance CSV from Ads Manager" — campaign return
103- "Paste in your recent reviews" — sentiment
105Read the header row, map the columns, and build the identical pulse. If a needed column is absent, name it — "there's no source column, so I can't break leads out by channel" — rather than quietly dropping the view.
107---

The uploaded-file path

A first-class mode, not a degraded one. Many owners in this segment have no clean connector on the growth side at all.

What to ask for, in plain language:

  • "Export your deals from the CRM" — funnel conversion
  • "Export your sales report for the month" — channel and product performance
  • "Download the campaign performance CSV from Ads Manager" — campaign return
  • "Paste in your recent reviews" — sentiment

Read the header row, map the columns, and build the identical pulse. If a needed column is absent, name it — "there's no source column, so I can't break leads out by channel" — rather than quietly dropping the view.


Raw lines 94 to 108
109## Parallel-pull rule
111Every call goes out in one batch. This pulse routinely touches five or six systems.
113Record failures internally and list them once in the appendix. Never surface a connector error in the middle of the brief — the owner asked about growth, not about integrations.

Parallel-pull rule

Every call goes out in one batch. This pulse routinely touches five or six systems.

Record failures internally and list them once in the appendix. Never surface a connector error in the middle of the brief — the owner asked about growth, not about integrations.

Raw lines 109 to 113