C Connecfy / Docs
v1

Receiving SMS

Any paired SIM can receive as well as send. It's off by default per account and turning it on never changes how sending behaves.

Enabling it

Dashboard → Settings → Messaging → Receive incoming SMS. This is an account-level switch, not per-SIM — every SIM on the account starts reporting inbound texts once it's on. Nothing further to set up — no separate permission or configuration step beyond having a SIM connected.

How a text reaches Connecfy

The gateway picks up the SMS as it arrives, then reports it to Connecfy over the same connection every paired SIM already has open — there's no extra channel to configure. If receiving is off for the account, the report is accepted but discarded rather than rejected, so an integration that doesn't separately track the setting never sees an error either way.

How a received message looks

JSON
{
  "direction": "inbound",
  "status": "received",
  "from_number": "+212612345678",
  "to_number": "+212600000000",
  "message": "Your appointment is confirmed",
  "received_at": "2026-08-25T09:12:04Z"
}

from_number is whoever texted the SIM; to_number is the SIM's own number, when the phone has reported one. It shows up in the same conversation thread as anything sent to or received from that same number — see Conversations.

Duplicate handling

Each report can carry a client_message_id generated at the point of receipt. If the same id arrives twice — a retried upload after a dropped response, for instance — Connecfy returns the original record instead of creating a second one. Reports sent without an id are recorded as-is, with no de-duplication, since there's nothing to match against.

Retry behavior

If reporting a received text fails (a brief connectivity drop, for instance), it's held and retried on the next check-in rather than dropped. This is implemented; it has not yet been exercised under a real sustained loss-of-connectivity test, so treat "survives a long offline stretch" as the intent rather than a fully field-verified guarantee.

Reading received messages from your own code

GET /api/v1/sms/received/ — the same authenticated API key as sending, paginated and filterable, with a cursor for a reliable sync loop that never re-shows or skips a message. Full reference: Receiving SMS API.

Current limitationThere's no webhook or push notification yet — reacting to a new message means polling the API above rather than being notified the instant one arrives. If your integration genuinely needs push delivery, that's not built yet — talk to Connecfy about your use case first.