1

Custom Workspace & Webhook Integration Guide

NOTE: To use the custom webhook integration feature, you'll need a solid understanding of how webhooks work and how to implement them correctly. If you're not familiar with this, we strongly recommend working with a developer to ensure everything is set up smoothly and functions as intended. šŸš€

Previously, integrations were limited to GoHighLevel (GHL). With Custom Workspaces, you can now:


  • Integrate myCRMSIM with any platform
  • Send messages into myCRMSIM via webhook
  • Receive message status updates via webhook
  • Receive inbound messages (WhatsApp / iMessage / SMS)
  • Assign SIMs, WhatsApp, iMessage or devices per workspace


    The messaging logic, routing, and devcie handling remain exactly the same as GHL integrations — only the integration method changes.
    Using the myCRMSIM API?
    If you need to send messages, manage contacts, workspaces, devices, or automations programmatically, please review our API documentation before continuing:Ā https://support.mycrmsim.com/article/do-you-have-an-api
    Key Concepts
    Workspace
    A workspace representsĀ one external system / client / integration.Ā Each workspace has:
    • Unique location_id
    • Contact & message routing
    • Assigned SIM / iMessage / WhatsApp devices
    • One outbound + inbound webhook endpoint
    Webhook
    Your system exposes an HTTP endpoint (URL) where:
    • WeĀ send inbound messages & status updates
    • YouĀ send outbound messagesĀ to myCRMSIM
    • Receive inbound call events, including missed, incoming, and outgoing calls, via webhook
    Step 1: Create a New Workspace
    1. Go to Admin Panel → Workspaces / Webhooks
      2. Click āž•Ā Add Workspace

      Ā  Ā  3. You will see theĀ Add New Workspace modal

      Workspace Fields

      FieldDescription
      Select Existing Workspace(Optional) Clone an existing workspace configuration

      NameWorkspace name (e.g. Client Name / App Name)

      AddressOptional business address

      EmailContact email for the workspace

      Phone NumberDefault phone number (E.164 recommended)

      URLYour webhook base URL

      Step 2: Configure Webhook Headers (Optional)
      If your webhook requires authentication or custom headers:
      1. Click āž• Add Header

        Ā  Ā  Ā 2.Ā  Enter:

          • Header KeyĀ (e.g. Authorization)
          • Header ValueĀ (e.g. Bearer YOUR_API_KEY)
        You can add multiple headers. These headers will be included inĀ all webhookĀ calls made to your system.
        Examples:
        Authorization: Bearer sk_live_xxx
        X-Client-ID: mycrm-client-01
        Step 3: Save Workspace
        ClickĀ Create Workspace.
          Your workspace will now appear in theĀ Workspaces / WebhooksĀ list with:
          • Location ID
          • Webhook URL
          • Actions (Edit / Delete / Instructions)
          Step 4: Assign Workspace to Subaccount SIM
          Once the workspace is created:
          1. Go toĀ Subaccount SIM Page

            Ā  Ā  2. Click on the "Connect Location" ​

              Ā  Ā  3.Ā  Choose theĀ WorkspaceĀ you created and toggle On.

              You will now see this newly created workspace on the subaccount SIM page in your active workspaces.

              Ā  Ā  Ā  Ā  Ā Assign one or more:

                • SIM numbers
                • WhatsApp devices
                • iMessage devices
              āš ļø Messages will only flow if a device is assigned.
              Step 5: Sending Messages TO myCRMSIM (Outbound from Your System)
              Your system sends messagesĀ to myCRMSIMĀ using the webhook API below.

              API EndpointPOSTĀ https://r6bszuuso6.execute-api.ap-southeast-2.amazonaws.com/prod/webhook

              This endpoint is common for all custom workspaces. The location_id inside the payload determines routing.
              Required Request Body
              Field Definitions
              FieldĀ RequiredDescription
              location_id āœ…Custom workspace location ID
              user_id āœ…User identifier from your system
              phone āœ…Recipient phone number (E.164 format)
              message āœ…Message text body
              attachments āŒArray of publicly accessible media URLs
              message_idāœ…Message identifier generated by your system
              channelāœ…imessage, whatsapp, sms, or rcs
              Notes
              • message_idĀ is mandatory and used for all future status updates
              • Media URLs must be publicly accessible
              • The selectedĀ channelĀ must be assigned to the workspace device
              Step 6: Message Status Updates (From myCRMSIM to You)

              For every outbound message, myCRMSIM sends status updates to your configured webhook URL.

              Status Update Payload
              Status Values

              The following status values are sent by myCRMSIM:

              StatusĀ Meaning
              SENTMessage sent successfully
              DELIVEREDMessage delivered to recipient
              FAILEDMessage delivery failed
              Step 7: Inbound Messages (Replies from End Users)

              When an end user replies via SMS, WhatsApp, or iMessage, myCRMSIM forwards the inbound message to your webhook URL.

              Inbound Message Payload
              Field Definitions
              FieldDescription
              typeAlways MESSAGE
              location_idWorkspace identifier
              phoneĀ Sender phone number
              messageĀ Inbound message text
              isMeĀ Always false for inbound messages
              attachmentsArray of media URLs (if any)
              Step 8: Inbound Call Events
              myCRMSIM sends call events to the same webhook URL used for inbound messages.

              Both message and call events use the same webhook structure. Use the `type` field to identify the event:

              Event Type

              Description

              MESSAGE

              A text message was received from the customer.

              CALLĀ 

              A call was logged, including a missed, incoming, or outgoing call.

              The isMe field identifies who initiated the activity:

              isMe Value

              Meaning

              falseĀ 

              The customer initiated the activity.

              true

              The SIM or workspace initiated the activity.

              Inbound Call Webhook Payload

              A call event is sent to your configured webhook when a call is logged on the SIM.
              The message field contains a readable call summary in the following format:
              CALL: <seconds> sec (<callType>)The available call types are:
              • Missed
              • Incoming
              • Outgoing
              A missed call always has a duration of 0 seconds.

              Outgoing Call Example

              Incoming Call Example

              Missed Call Example

              Call Payload Fields

              Field

              Description

              type Always CALL for a call event.
              location_idĀ location_id The custom workspace location identifier.
              phoneThe customer's phone number in E.164 format.
              message A readable summary containing the call duration and call type.
              isMe
              true when the SIM initiated the call; false when the customer initiated it.
              attachments An empty array for call events.
              Your webhook handler should check the type field before processing the event. When type is CALL, store or process the call record separately from normal text messages.
              For example:
              if (payload.type === "MESSAGE") { // Process an inbound text message
              }

              if (payload.type === "CALL") { // Process a missed, incoming, or outgoing call
              }Call events are sent to the same inbound webhook URL configured for the custom workspace.
              Step 8: Editing or Deleting a Workspace
              FromĀ Workspaces / WebhooksĀ page:
              • Edit → Update workspace info, webhook URL, or headers
                Delete → Permanently remove workspace (messages will stop)

                Ā āš ļø Deleting a workspace will break all assigned subaccounts.

                Common Use Cases
                • Custom CRM integration
                • SaaS messaging backend
                • AI / Bot platform
                • Marketing automation tools
                • Appointment systems
                HTTP Responses & Error Handling

                Your webhook client should expect the following responses from myCRMSIM when sending messages.

                Successful RequestĀ (HTTP 200)
                When the payload is valid and accepted, the API responds with:
                Meaning:
                • The event has been validated
                • The message is queued successfully
                • Delivery will be processed asynchronously
                Invalid Request (HTTP 400)
                Common causes:
                • MissingĀ location_id
                • Missing or emptyĀ message_id
                • InvalidĀ channelĀ value
                • Invalid phone number format
                Best Practices
                • Always validate payloads before sending
                • TreatĀ HTTP 200Ā asĀ accepted, not delivered
                • Rely onĀ STATUS-UPDATEĀ events for final delivery state
                • Implement retry logic only for non-200 responses
                • Do not retry blindly onĀ 400 errors
                Summary Flow
                1. Send message → receive HTTP 200
                2. Wait forĀ STATUS-UPDATEĀ callbacks
                3. ProcessĀ inbound MESSAGEĀ events

                Ā 

                Was this article helpful?

                0 out of 0 liked this article

                Still need help? Message Us