← Files Cargo CLIARCHIVED FILE
skills/cargo-gtm/provider-playbooks/g2.md
5.06 KB · Oct 4, 2026 · 12:30 UTC
---
provider: g2
category: signal (software-review & category data)
last-reviewed: 2026-07-09
---
# g2 (G2)
Software-review data from G2, in two surfaces: an **action** (`enrichProduct`, 1) that pulls one product's reviews/ratings/specs, and an **extractor** (`fetchProducts`, 1) that syncs the product list of G2 categories into a model — vendor lists with each product's `users`, `industries`, and `market_segments` per G2. Use it when the software *category* is the signal ("every vendor selling X", "what do reviewers say about product Y"). Not in the priority stack — `theirStack` (0.5) stays the default for tech-stack/hiring intent; g2 answers the seller-side and review-side questions theirStack can't.
## Credits-based actions
| Action | Cost | Inputs | Use for |
|---|---|---|---|
| `enrichProduct` | 1 | `productUrl` (full G2 URL **or** just the product slug) | Reviews, ratings, and specs for one G2 product. |
## Extractor (syncs into a model, not an action)
| Extractor | Cost | Inputs | Use for |
|---|---|---|---|
| `fetchProducts` | 1 per fetch | `categories` (from the `listCategories` autocomplete) | Sync a G2 category's products into a model: `name`, `link`, `users`, `industries`, `market_segments`. |
Wire it with `cargo-ai storage model create … --extractor-slug fetchProducts` (see the `cargo-storage` skill). Fetch mode is non-incremental with a **30-day minimum interval** — it's a periodic snapshot, not a live feed.
## What it's for
- ✅ **Category-level vendor lists** — "every product G2 lists under Sales Intelligence" → a model of vendors to prospect into, with the buyer profile (`users`, `industries`, `market_segments`) attached.
- ✅ **Review/rating context on a known product** — `enrichProduct` for competitive or account research before outreach.
- ❌ **Cheapest G2 product pull** — `piloterr.getG2ProductInfo` (0.01) returns G2 product info for 1/100th the price; use g2 when you want the cargo-native surface or the category extractor, piloterr for high-volume product scrapes.
- ❌ **Tech-stack intent** — "who *uses* X" is `theirStack.searchCompanies` (0.5); g2's `users` field is G2's reviewer segments, not an installed-base list.
## Patterns
### Pattern A — Enrich one product
```bash
cargo-ai orchestration action execute \
--action '{"kind":"connector","integrationSlug":"g2","actionSlug":"enrichProduct"}' \
--data '{"productUrl":"postman"}' \
--wait-until-finished
```
`productUrl` accepts the bare product slug as well as the full URL.
### Pattern B — Category → vendor model
1. Fetch valid category values from the `listCategories` autocomplete on `connection integration get g2` — categories are provider-defined strings, not free text.
2. Create a model backed by the `fetchProducts` extractor with those `categories` (see `cargo-storage`, `model create --extractor-slug`).
3. Downstream, treat each product row as an account seed: resolve the vendor's domain, then enrich via the normal SOURCE → ENRICH spine.
## Common pitfalls
- **`fetchProducts` is an extractor, not an action.** `action execute` won't run it; it syncs into a model on a schedule (min every 30 days).
- **Categories are an opaque enum.** Guessed category strings silently return nothing — always resolve them via the `listCategories` autocomplete first.
- **Rate limit: 10 calls/minute** (spread) — among the slowest in the catalog. Don't fan `enrichProduct` across hundreds of rows; the batch will crawl.
- **Product rows aren't companies.** The extractor emits products (`name`, `link`); you still need a domain-resolution step before company enrichment.
## Position in the waterfall
- **SIGNAL / SOURCE (category-shaped).** Seeds account lists when the filter is "sells in category X" or "reviewed on G2"; the resulting vendors flow into the standard ENRICH → CONTACT → VERIFY spine.
- For buyer-side tech intent, stay with `theirStack` (0.5, priority stack) — see [`../references/stage-action-map.md`](../references/stage-action-map.md).
## Action shape
`{"kind":"connector","integrationSlug":"g2","actionSlug":"enrichProduct"}`. **No `connectorUuid` in `config`.**
## Pairs with
- [`../recipes/tech-intent.md`](../recipes/tech-intent.md) — the buyer-side counterpart; g2 covers the seller/review side of the same market.
- [`../recipes/build-tam.md`](../recipes/build-tam.md) — category vendor lists as a TAM seed.
## Recurring use
- **Scheduled fit: the extractor, not the action.** `fetchProducts` is already the recurring surface — a periodic category snapshot with a hard 30-day minimum interval, so its floor overrides the weekly company-search default in [`../recipes/save-as-play.md`](../recipes/save-as-play.md); don't also cron `enrichProduct` to fake a faster feed.
- **In-play gate for `enrichProduct`:** review data decays slowly — stamp a fetched-at column and re-enrich only rows older than the snapshot rhythm, never on empty-field alone once populated.
- **Mind the 10 calls/min limit** (see Common pitfalls): a recurring `enrichProduct` sweep over a large vendor model will crawl — keep scheduled sets to the handful of products you actually track.
SHA-256: b73c2ee013b844f67ca5dd9ca09611e81c6e6224c9467c84906401b4287dfa1b