Home / Docs / Custom signals
Docs · custom signals

Define your own signals on top of the 47 we ship.

Mama ships 47 built-in buying signals across 5 categories. Custom signals let you add your own — anything you can express as a SQL query over your warehouse, a webhook payload, or a CRM field change. Available on Pro plan.

Three ways to define a custom signal.

1 · SQL signal (warehouse)

If your warehouse is connected via Snowflake, BigQuery, or Redshift, write any SQL query that returns account_domain, signal_strength, fired_at. Mama runs it nightly and creates a signal record per row.

-- Custom signal: "account opened our pricing page 3+ times in 7 days"
SELECT
  account_domain,
  COUNT(*) AS visit_count,
  CASE
    WHEN COUNT(*) >= 8 THEN 5  -- strength: 5 (very strong)
    WHEN COUNT(*) >= 5 THEN 4
    WHEN COUNT(*) >= 3 THEN 3
    ELSE 0  -- not strong enough; skip
  END AS signal_strength,
  MAX(visited_at) AS fired_at
FROM web_visits
WHERE page_path = '/pricing'
  AND visited_at >= CURRENT_DATE - INTERVAL '7 days'
GROUP BY account_domain
HAVING COUNT(*) >= 3;

2 · Webhook signal

Post to https://api.signalmama.com/v1/signals/custom with a JSON payload. Use this when the source-of-truth lives in a tool that's not in your warehouse (intercom, Customer.io, internal system).

{
  "signal_type": "expansion_intent",
  "account_domain": "acme.co",
  "strength": 4,
  "fired_at": "2026-05-25T14:12:00Z",
  "source_url": "https://internal-tool.com/event/123",
  "metadata": {
    "trigger": "added 3rd seat",
    "csm_owner": "[email protected]"
  }
}

3 · CRM-field signal

If your CRM is connected (HubSpot, Salesforce, Pipedrive), define a signal as "this field changed to this value" or "this field crossed this threshold." Configured in Settings → Custom signals → CRM trigger. No code.

How custom signals show up.

In the brief: labeled "Custom signal · <your-name>" with the strength score and source URL. Same first-class status as built-in signals.

In the ICP rubric: custom signals contribute to the signal-strength dimension by default; you can reweight or create a separate rubric dimension for them.

In webhooks: they fire signal.fired webhooks just like built-ins. See /api/webhooks.

Anti-patterns.

Related

Glossary · buying signal → Product · buying signals → API webhooks →