Contacts
Add a signal to a contact
Designed for first-party signals: actions a lead takes in your own product or stack, pushed programmatically the moment they happen. Hook it to any event you already track (a lead signs up for a free trial, books a demo, attends your webinar, downloads your pricing guide, upgrades to a paid plan...) and the signal is added to the contact, next to the signals detected by ReplySparrow agents, most recent first. Anything that can send an HTTP request can feed it: your backend, a CRM workflow, a form or scheduling tool webhook, Zapier, Make or n8n. Needs the signals:write scope.
To send a first-party signal, describe what happened in intent (e.g. "Booked a demo from the pricing page"), optionally add a short label in intent_keyword (e.g. "demo_booked"), and leave intent_type empty. Signals without an intent_type are recorded on every call, so repeated events (a second demo, another webinar) are all kept; make sure your integration sends each event only once.
Set intent_type only to record one of the signal types detected by ReplySparrow agents. A typed signal the contact already has (same intent_type and intent_keyword) is not recorded twice and the call returns created: false; hiring, hiring_surge, new_decision_maker, recently_active, job_change and funding are recorded at most once per contact, whatever the keyword. At least one of intent, intent_type or intent_keyword is required.
https://app.replysparrow.com/api/v1/contacts/{id}/signalsAuthorizations
Path Parameters
Contact id
Body
application/jsonHuman-readable description of what the lead did, as it should appear on the contact
Example: "Booked a demo from the pricing page"
Leave empty for first-party signals. Only set it to record one of the signal types detected by ReplySparrow agents.
Available options: competitor_engagementinfluencer_engagementkeyword_engagementown_content_engagementjob_changehiringfundingwebsite_visitlookaliketop_activerecently_activenew_decision_makerhiring_surgeprofile_viewcompany_followtechnologyproduct_intent
Short label for the signal, e.g. trial_signup, demo_booked or webinar_attended
Example: "demo_booked"
Response
application/jsoncurl --request POST \ --url https://app.replysparrow.com/api/v1/contacts/string/signals \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "intent": "Booked a demo from the pricing page", "intent_keyword": "demo_booked"}'{ "created": true, "contact": { "id": "8f1c2c3e-5b7a-4a51-9d0e-2b6f8f6d9c11", "workspace_id": "ws_123", "first_name": "Ada", "last_name": "Lovelace", "full_name": "Ada Lovelace", "headline": "CTO at Analytical Engines", "summary": null, "title": "CTO", "seniority": null, "tenure_months": null, "linkedin_url": "https://www.linkedin.com/in/ada-lovelace", "sales_nav_url": null, "linkedin_member_urn": null, "profile_image_url": null, "degree": null, "location": "London, UK", "city": null, "country": null, "time_zone": null, "company": "Analytical Engines", "company_id": null, "company_size": 120, "company_industry": "Software Development", "company_location": null, "company_linkedin_url": null, "company_logo_url": null, "company_description": null, "website": null, "position_dates": "2023 - Present", "email": "ada@example.com", "email_status": "valid", "email_verified_at": null, "email_domain_catchall": null, "phone": "+441234567890", "intent_score": 25, "fit_score": 88, "fit_verdict": "fit", "fit_reason": null, "fit_confidence": null, "lead_score": 82, "scored_at": null, "lead_source": "api", "agent_id": null, "agent_status": "qualified", "skip_reason": null, "hand_picked": 0, "owner_id": null, "notes": null, "connection_requested_at": null, "connected_at": null, "message_sent_at": null, "inmail_sent_at": null, "last_replied_at": null, "email_replied_at": null, "reply_kind": null, "enriched_at": null, "created_at": "2026-10-01 09:12:44", "linkedin_identifier": "ada-lovelace", "skills": [ "Mathematics", "Engineering" ], "bounced": false, "unsubscribed": false, "blocked": false, "company_blocked": false, "email_enriched": true, "phone_enriched": true, "enriching_email": false, "enriching_phone": false, "ready_for_campaign": true, "has_started_campaign": true, "state": "in_campaign", "rejected_at": null, "rejected_by_user_id": null, "rejection_reason": null, "rejection_reason_text": null, "intent": "Became CTO at Analytical Engines", "intent_type": "job_change", "intent_keyword": null, "campaign_status": [ { "campaign_id": "a3f1c2d4-0000-4000-8000-000000000001", "campaign_name": "Q4 founders", "track": "linkedin", "state": "in_progress", "current_step": 2, "next_step_at": "2026-10-26 09:00:00" } ], "signals": [ { "id": "c7e0e0a2-2f4b-4c1e-9d55-0b9a4e3f1a10", "contact_id": "8f1c2c3e-5b7a-4a51-9d0e-2b6f8f6d9c11", "type": "job_change", "title": "Became CTO at Analytical Engines", "description": null, "score": 25, "source": "linkedin", "source_url": null, "occurred_at": "2026-09-28T00:00:00.000Z", "metadata": {}, "created_at": "2026-09-28T08:00:00.000Z" } ], "custom_fields": { "favorite_tool": "Notion" }, "agent": { "id": "5b0f3c2e-8a8e-4bd1-9a51-6f1f3c0f2a10", "name": "VP Sales in US SaaS", "target_job_titles": [ "VP Sales", "Head of Sales" ], "target_industries": [ "Software Development" ], "target_company_sizes": [ "51-200", "201-500" ], "target_locations": [ "United States" ], "target_company_types": [], "ignored_companies": [ "Globex" ], "mandatory_keywords": [], "exclude_service_providers": true, "skip_icp_filter": false, "signals": [ { "id": "8e2d…", "type": "competitor_engagement", "values": [ "https://www.linkedin.com/company/globex/" ], "enabled": true } ], "paused": false, "status": "active", "min_lead_score": 70, "list_id": "c1a4…", "last_run": null, "last_error": null, "created_at": "2026-10-24T09:12:44.000Z", "updated_at": "2026-10-24T09:12:44.000Z" }, "lists": [ { "id": "list_1", "name": "Q4 targets", "campaigns": [ { "id": "5b0c6c1e-8a43-4f7e-9d7d-1f8a2b3c4d5e", "name": "Q4 founders", "active": false, "channel": "linkedin", "status": "draft", "goal": "conversations", "tone": "professional", "language": null, "booking_url": null, "exclude_first_degree": true, "split_messages": false, "skip_invitation_after_days": 7, "linkedin_account_id": "acc_123", "email_account_id": null, "linkedin_account_ids": [ "acc_123" ], "email_account_ids": [], "list_id": "9f8e7d6c-0000-4000-8000-000000000001", "list_ids": [ "9f8e7d6c-0000-4000-8000-000000000002" ], "workflow_id": "wf_123", "steps": [ { "id": "st_1", "track": "linkedin", "order": 1, "type": "connect", "delay_days": null, "message": null, "connect_note": null, "email_subject": null, "email_body": null, "ai": true }, { "id": "st_2", "track": "linkedin", "order": 2, "type": "delay", "delay_days": 1, "message": null, "connect_note": null, "email_subject": null, "email_body": null, "ai": false }, { "id": "st_3", "track": "linkedin", "order": 3, "type": "message", "delay_days": null, "message": "Hi {{first_name}}, thanks for connecting!", "connect_note": null, "email_subject": null, "email_body": null, "ai": false } ], "created_at": "2026-10-24T09:12:44.000Z", "updated_at": "2026-10-24T09:12:44.000Z" } ] } ] }}