How it works
1. Source
Four trigger feeds and one inventory feed run on separate clocks.
- Store records, daily. App installs, app removals, and order band moves inside the coverage zone.
- SEC filings, daily. The full-text search index for Form D and Form C filings by consumer issuers.
- Distribution news, twice a month. Retailer vendor pages, brand press rooms, and trade press for new distribution announcements.
- Exhibitor rosters. Pulled for the watched consumer shows as each list is published.
- Inventory refresh, monthly. The standing list of manufacturers, importers, and distributors inside the 1-day ground zone.
Every row lands in one prospects table with the trigger type, the trigger date, and the detail the email will quote.
2. Qualify
Filters drop:
- Too small. Stores below 800 orders a month.
- Nothing to hold. Dropship storefronts with no inventory, single-SKU brands whose product ships in a letter, and marketplaces that never take title.
- Cannot be stored. Goods the site cannot legally store.
- Already placed. Brands already sitting on a national fulfillment network under a multi-year term.
- Already known. Anyone already in the CRM.
Roughly half of raw store rows leave here, an estimate from three coverage zones.
3. Enrich
For each qualified brand the system picks the seat that signs a warehouse agreement, which changes with company size.
- Under 20 employees. The founder or a co-founder.
- 20 to 200 employees. The head of operations or director of fulfillment.
- Above 200 employees. The supply chain or logistics director.
- Find the email. Hunter works from the name and the brand domain.
- Verify it. The BetterContact waterfall confirms the address.
- No name on the record. One LinkedIn lookup covers those rows.
4. Outreach
Four emails and one phone call over 18 days.
- The opening line. Cites the brand’s own record: the app it installed and the date, the retailer that listed it, the offering amount on the filing, or the booth it took.
- The offer. A 15-minute rate call that ends in a written rate card.
- Step 4 goes first. It sends a sample rate card built for the brand’s order volume before anyone has agreed to anything.
5. Book & track
The Claude API sorts each reply into positive, pricing question, has-3PL, too-early, wrong-person, not-now, or unsubscribe.
- Positive reply. Gets the booking link and a five-question discovery form.
- Form returned. It is priced against the rate table by WF5, and a branded quote PDF goes back inside 10 minutes.
- Owner alert. A Slack message quoting the brand, the trigger, and the volume.
- CRM deal. Stores order volume, SKU count, inbound container or pallet counts, and the incumbent’s name, so the rate call starts with the arithmetic already done.
Lead sources for 3pl warehouses
Ranked by signal quality:
1. Ecommerce store app-stack and order band changes
A brand’s fulfillment plan breaks at a visible moment, and the store’s own front end records it.
Store platform data covers roughly 5 million active Shopify, BigCommerce, and WooCommerce stores with the apps and scripts each one loads, an estimated monthly order band, the shipping page text, and a change history.
The change history is the trigger, and six events matter.
| Change | What it means |
|---|---|
| A subscription app installed (Recharge, Skio, Loop Subscriptions) | A fixed renewal date the brand must ship against every month, which is where packing at the office fails first |
| A returns app installed (Loop Returns, Narvar, AfterShip Returns) | Volume has passed the point where returns get handled by hand |
| A multi-carrier shipping app installed (ShipStation, Shippo, EasyPost) | The brand is buying labels in batches |
| A fulfillment network’s app removed, or its tracking script dropped | The incumbent relationship just ended and the brand has 30 to 90 days of notice running |
| An order band moving from under 500 to over 1,000 a month | The plain capacity signal |
| A wholesale or B2B channel app added | Pallet orders are coming into a business built for parcels |
The baseline build reads the store list and the change history from Store Leads, whose API returns the platform, the app list, the estimated order band, and a per-domain change feed.
Highest intent of the five, because the change is dated, the brand made it deliberately, and it is 2 to 8 weeks ahead of the first quote request.
A metro coverage zone produces 200 to 300 qualifying store changes a month, an estimate from three zones.
2. Retail distribution wins and the routing guide that arrives with them
A brand that has been shipping parcels from a garage and then lands 400 doors at a national chain has a problem no amount of effort solves. The retailer sends a routing guide with label placement, carton marking, appointment scheduling, and delivery windows, and it charges the brand for every miss.
The signals are public and dated.
- Retailer pages. Retailers publish new vendor and new brand pages, and chains announce set resets by category.
- The brand’s own announcement. Brands post the win to their press room and their social accounts because it is the best news they have all year.
- Trade press by category. Grocery and natural foods, beauty, outdoor, pet, and housewares carry the rest, and an Apify actor reads those sources twice a month.
- The qualifying record. A brand with a live store, a named retailer, and an announcement inside 60 days.
High intent and a short fuse, because the first purchase order usually ships 60 to 120 days after the announcement and the brand cannot miss it.
3. Consumer brand funding filings (SEC Form D and Form C)
Money raised by a consumer products company turns into inventory within a quarter, and inventory needs somewhere to sit.
| Filing | What it gives |
|---|---|
| Form D | Filed on EDGAR by any issuer selling securities under Regulation D. Carries the issuer name, address, industry classification, total offering amount, and the date. Free through the EDGAR full-text search API and the daily index files |
| Form C | Regulation Crowdfunding raises, which skew heavily to consumer brands |
The system keeps filings whose industry code sits in retail, food and beverage, apparel, health, or other consumer products, with a total offering between $500,000 and $15,000,000.
Below that there is no inventory to store, and above it the brand is usually already placed.
Medium-high intent with a 30 to 90 day lag between the filing and the purchase order, which is exactly the right amount of time to be early.
4. Trade show exhibitor rosters
A first-time or second-year exhibitor at a consumer show is a brand paying $4,000 to $20,000 for a booth in order to come home with wholesale orders it has no way to fulfill.
- Where the lists come from. Exhibitor lists for the shows retail buyers actually walk (natural products, snacks and confectionery, beauty, outdoor, pet, gift and home) post on each show’s site 4 to 10 weeks ahead.
- What each row carries. Company name, booth number, category, and usually a website.
- How it is pulled. An Apify actor takes each roster as it posts.
- What is kept. Brands with a live store and no fulfillment partner named on the shipping page.
Medium intent with excellent timing, because the useful message goes out in the 3 weeks after the show while the orders are landing.
5. Regional manufacturers, importers, and distributors (volume filler)
Companies with 10 to 250 employees in NAICS 31 to 33, 423, and 424 inside the site’s 1-day ground zone, with no trigger attached.
- Where it comes from. State business registries and industry directories.
- What it is for. The overflow storage and pallet-in, pallet-out accounts that fill racks between the trigger rows, capped at one third of sends.
- Why it is worth keeping. A manufacturer with a seasonal peak converts on the second or third contact rather than the first.
Lowest intent of the five.
ICP definition
Filter logic the workflow applies.
What starts a row
| Filter | Rule |
|---|---|
| Store source | Shopify, BigCommerce, or WooCommerce; estimated 800 to 25,000 orders a month; an app install, app removal, or order band move from the watched list dated inside 14 days; ships physical goods it owns |
| Retail source | A named retailer announcement dated inside 60 days; the retailer publishes a routing guide and charges compliance penalties; the brand has a live store |
| Filing source | Form D or Form C on EDGAR inside 90 days; issuer industry in retail, food and beverage, apparel, health, or other consumer products; total offering $500,000 to $15,000,000 |
| Show source | Exhibitor at a watched consumer show; first or second year listed; live store; no fulfillment partner named on the shipping or returns page |
| Inventory source | NAICS 31 to 33, 423, or 424; 10 to 250 employees; address inside the 1-day ground zone |
What keeps a row
| Filter | Rule |
|---|---|
| Geography | The 3-digit ZIP prefixes the site reaches in 1 or 2 days by ground, plus the brand’s own state for the inventory source |
| Volume floor | 800 or more orders a month, or 20 or more inbound pallets a month, or a filing above $500,000 |
| Fulfillment status | Ships from its own space, or names an incumbent whose agreement is inside a switching window; brands under a multi-year national network term are dropped |
| Goods | Storable at the site under its permits and licences; alcohol, tobacco, firearms, controlled substances, temperature-controlled food, and hazmat above the site’s rating are dropped unless the operator holds the licence |
| Contact | A named founder, head of operations, or supply chain lead, resolved and verified; support, info, and press mailboxes are dropped |
| Excluded | Marketplaces that never take title, dropship-only storefronts, single-SKU brands shipping in a letter, current and former clients (CRM match), competing 3PLs, freight brokers and forwarders, domains on the suppression list |
Outreach sequence
The five steps
| Step | Day | Channel | Goal |
|---|---|---|---|
| 1 | 0 | Opener citing the store change, retail door, filing, or booth; offer a 15-minute rate call | |
| 2 | 3 | Send the capability sheet: square footage, warehouse system, carrier mix, cut-off time, receiving and pick rates, accuracy and on-time numbers | |
| 3 | 7 | Phone | Call the operations line, reference the email, ask for the rate call or the name of whoever owns fulfillment |
| 4 | 12 | Send a sample rate card built for the brand’s order volume and ask what their all-in cost per order is today | |
| 5 | 18 | Breakup asking to be the overflow site for peak, which needs no contract until a purchase order lands |
Example step 1 (subscription app install trigger)
Subject: [Brand] and the [app] install
Hi [First name], [Brand] added [app] on [install date], and a renewal date is where packing in-house usually stops working. Every subscriber ships the same week whether or not anyone is free.
We run [N] square feet in [city] on [system], with a [time] cut-off and [N]-day ground to [N]% of the country. Fifteen minutes gets you a rate card for [order band] orders a month.
Worth a slot this week?
Expected reply rates
| Row type | Expected reply rate |
|---|---|
| Store-change and retail-door rows | 3 to 6% |
| Filing and exhibitor rows | 2 to 4% |
| Inventory rows sent between triggers | 1 to 2% |
The 3 to 6% is an estimate for a warmed domain writing to founders and operations leads.
Season moves the number as much as the copy does.
- February through July. When brands change fulfillment.
- August through October. When they refuse to touch anything before peak.
- Inside 14 days of a store change. A row contacted in that window replies at the top of the range.
Stack and running costs
| Tool | Purpose | Monthly |
|---|---|---|
| n8n Cloud | Orchestration | $24 |
| Apify | Retailer and press feeds, exhibitor rosters, registry rows, shipping page fetches, LinkedIn lookups | $42 |
| SEC EDGAR full-text search + submissions API | Form D and Form C filings | $0 |
| Hunter | Decision-maker email finding | $34 |
| BetterContact | Waterfall enrichment + verification | $15 |
| Instantly | Sending + warmup | $37 |
| Claude API | First-line generation + reply classification | $8 |
| SourceToDocs (Starter) | Branded rate card and quote PDF generation | $19 |
| Sending domain | Deliverability | $1 |
| Supabase (free tier) | Prospects, store snapshots, rate table, and suppression | $0 |
| Total | ~$180 | |
| Store Leads (source 1, priced separately below) | Store records with app-stack change history and an API | $79 |
Notes on the lines
SourceToDocs is built by 2V Automation, the team behind this library.
Store Leads carries source 1, which is the highest-intent feed in the system, and its Standard tier at $79/month is the line most operators should add on day one. The total above holds it separate so the base figure stays comparable with the other systems in this library.
The EDGAR full-text search and submissions APIs are free and ask only for a User-Agent header naming the company and a contact email.
BuiltWith covers similar store technology data from $295/month and is left out.




