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.
    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
    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: 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