Channels and connectors
Channels and connectors
Who can do this: messaging channels (Inbound Messaging) need Manage Members. Connectors (adding, changing, testing, running) need Owner. See the .
What it's for
Two different things connect your space to the outside world:
A connector links a table or a feature to an outside service: a CRM, a telephone exchange, a payment gateway, a carrier. Connectors are documents in your navigator and have their own editor.
The two overlap in name only. The Email (IMAP / SMTP) connector copies a mailbox into a table. It does not feed the inbox. Use an email channel for the inbox.
Before you start
You need the accounts at the outside service. Each section below says which. This page never shows a credential value.
The messengers call back into your Juxtaboard server, so the server needs a public address.
Needs your administrator: these are set for the whole installation, in System, Config.
•Public App URL. Telegram, MAX, GREEN-API and own-Resend email register a web address with the provider when you save. Without it, own-Resend email and quick-connect WhatsApp say Set the Public App URL system config first and keep Add disabled. Telegram and MAX refuse when you press Add.
•Inbound Email Domain for the Juxtaboard address option, with its Resend inbound webhook and signing secret. Without it Inbound Messaging shows No inbound email domain is set.
•Outgoing email, file storage, push, captcha and AI providers. Attachments, browser alerts, chat CAPTCHA and inbox suggestions depend on them.
•Installing new connector packages and registering the OAuth app that amoCRM sign-in needs (System, Connectors). The built-in connectors below are always offered. A package installed by an administrator appears in the same gallery.
•Stripe on the payments connector, and the GigaAM speech engine, are set on the server.
You can tell something is missing when a field is greyed out or an error names a "system config".
Part 1. Messaging channels
The channels at a glance
Channel (button in Inbound Messaging) | You need | How the connection is made | Can you write first? |
|---|---|---|---|
Add email address, Juxtaboard address | Nothing. An address on the server's inbound domain | Set up by your administrator | Yes |
Add email address, Your Resend account | A Resend account, a domain with receiving turned on, an API key with full access | Registered in your Resend account for you; by hand if that fails | Yes |
Add Telegram bot | A bot token from @BotFather | Registered for you on save | Yes, but only to people who have messaged the bot |
Add MAX bot | A bot token from @MasterBot | Registered for you on save | Yes |
Add WhatsApp number, WhatsApp — official | A Meta app with the WhatsApp product: phone number ID, access token, app secret, a verify token you invent | You paste a callback URL into Meta | No. Only within 24 hours of the customer's last message |
Add WhatsApp number, WhatsApp — quick connect | A GREEN-API instance already paired by QR code | Registered for you on save | Yes |
Chat in a connected app | A connected app in the space | The app talks to your server | n/a |
Telegram, MAX and quick-connect WhatsApp support group chats. Quick-connect WhatsApp reports Delivered and Read. Official WhatsApp and quick-connect both match senders by phone number. Telegram and MAX match by the messenger's own id.
Compose from the inbox (New message) offers email, Telegram and MAX only.
Settings every channel has
Setting | What it does | Default | Risk |
|---|---|---|---|
Routing enabled | Switch the channel off without deleting it | On | Off means messages for it are not taken in |
Contacts table and Sender match column (email, WhatsApp) | New conversations are linked to the row whose column equals the sender | No table | A wrong column means no matches and no error. For phone columns the digits are compared, any format works. Id columns are compared exactly |
Routing | Gives a new conversation an owner: the person on the linked record (a person column, or a reference followed to a person column), else a team group | Nobody | It only fills an empty assignee. A person you picked in the inbox stays |
Remove | Deletes the channel after you confirm (Remove channel). Telegram, MAX, quick-connect WhatsApp and own-Resend email take their registered web address down, best effort. Official WhatsApp has nothing to take down | n/a | Existing conversations stay but lose the channel. See "Undo" below |
Once, for the whole space, Attachment processing policy controls files: Prohibited extensions (executables are blocked by default), Max file size (MB) (25 by default) and Keep attachments for (days) (30 by default).
Email: Juxtaboard address
Type a full address and press Add. If the server has an inbound domain, the dialog suggests an address built from the space's address part. Replies are sent from the platform address. There is nothing else to set up on your side.
Email: your own Resend account
Choose Your Resend account under Which mailbox receives this address?.
In Resend, add your domain under Domains and turn on Receiving. Add the MX record Resend shows in your DNS.
In Resend, create an API key with Full access. A sending-only key can send but cannot read received mail.
In the dialog fill Email address (for example info@yourcompany.com) and Resend API key, then press Add. The key is checked, the domain is checked for receiving, and a webhook is registered in your Resend account.
Read the Resend webhook state: Connected, Connected (added by hand) or Not receiving yet. If automatic registration failed, add the Webhook URL shown in Resend, Webhooks, with the event email.received, paste its Signing secret here and save. Or enter the API key again and save to retry.
Optional: Send all of the project's email from this address sends automations, form assignments, portal notices and sign-in links, and booking and order confirmations through your Resend account. The domain must also be verified for sending (DKIM and SPF). Only one inbox in the space can do this. Team mail such as invitations and digests still comes from the platform.
Telegram bot
In Telegram, create a bot with @BotFather and copy its token.
Add Telegram bot, paste it into Bot token, press Add. The token is checked and the bot's @name becomes the channel address.
Under Sender name resolution set External users contacts table and Telegram ID column… so senders show names. Internal users contacts table (defaults to the person directory) names your staff.
Optional Welcome message (below).
A bot can write only to people who have started it. Group chats are supported.
MAX bot
Same as Telegram. Create the bot in MAX with @MasterBot, take the token from the bot's advanced settings, press Add MAX bot. The ID column is MAX ID column…. The welcome message is also sent when someone presses Start.
WhatsApp: official
In your Meta app, open WhatsApp, API Setup. Note the Phone number ID, Access token and App secret. Invent a Verify token (your choice).
Add WhatsApp number, choose WhatsApp — official, fill the four fields, press Add. Meta is asked for the number; the verified business number becomes the channel address.
In the Meta app, Webhooks, WhatsApp: set the Callback URL and Verify token shown in the dialog, and subscribe to the messages field. The callback URL is the same for every WhatsApp number in the space and is registered once per Meta app. Juxtaboard does not register it for you and does not remove it.
Replies are allowed for 24 hours after the customer's last message. After that the reply box says Outside the 24-hour WhatsApp service window — a pre-approved template is required (not yet supported).
WhatsApp: quick connect (GREEN-API)
Careful: this is an unofficial connection. WhatsApp does not permit it and the number can be banned. The dialog says so. Use the official option for volume or for a number you cannot lose.
In your GREEN-API console create an instance and scan its QR code with WhatsApp.
Add WhatsApp number, choose WhatsApp — quick connect, paste any example URL from the console into Instance URL, press Add. It carries the instance id, token and host. The connected number is read back and the webhook is registered.
WhatsApp session shows Connected, Disconnected — re-scan the QR code in your GREEN-API console or Not ready.
If the instance already sends events to another system, saving is refused. A box Take over this instance's webhook appears. Ticking it stops that other system receiving them.
Chat in a connected app
For signed-in customers of your own front-end app. Pick the Connected app, keep Chat enabled on, and set Chat page in the app (where email and push links open) and Email / push an unread reply after (minutes). The app's origin must be in the portal allowed origins. This is for developers; see the business guide.
Welcome message and "Link my account" (Telegram and MAX)
Setting | What it does | Default |
|---|---|---|
Welcome message | Sent to a new contact's first message, in the language you choose per Language | Off |
Show portal button | Adds a button that opens your customer portal. Needs no Public App URL if off | On |
Show “Link my account” button | Asks the person to share their phone number and links the chat to the matching row. Customers match in the contacts table, staff in a staff table with a Phone column | Off |
Also grant portal access | Lets the portal button sign the person in without an email link | Off |
Careful: Also grant portal access trusts the phone number as proof of identity for your portal data. Turn it on only if that is true for your business. A number found on several rows is never linked automatically.
Send test sends the copy on screen to a chat id you supply. The recipient must have messaged the bot first.
How credentials are stored
Tokens, app secrets, API keys and signing secrets are encrypted when saved. They are never shown again; only non-secret parts are (the bot name, the phone number ID, the WhatsApp verify token, the GREEN-API instance id). That is why Telegram, MAX and WhatsApp show credential fields only when you add a channel. To change a token, remove the channel and add it again. For your own Resend account you can re-enter the key on the existing channel. Channels saved before encryption existed may keep a readable copy until your administrator runs the clean-up step.
Common errors
What you see | Meaning and fix |
|---|---|
Set the Public App URL system config first | Ask your administrator |
Provide the Telegram bot token / the MAX bot token / the WhatsApp Cloud API credentials | A required field is empty |
Invalid bot token | The messenger rejected it. Copy it again whole |
Resend rejected this API key | Copy the key whole; it starts with |
This Resend API key can only send | Create a key with Full access |
domain is not a domain in this Resend account | Add the domain in Resend, Domains, and turn on Receiving |
Receiving is turned off for domain / has not verified the receiving MX record | Turn on Receiving and add the MX record shown |
domain is this platform's own inbound domain | Use Juxtaboard address for that domain |
Sending is turned off for / has not verified … for sending | Only for the "send all mail" switch. Turn on Sending and add DKIM and SPF |
That does not look like a GREEN-API instance URL | Paste an example URL from the console |
This GREEN-API instance is not paired with WhatsApp yet | Scan the QR code first |
Part 2. Connectors
Add and edit a connector
In the navigator, open the arrow next to New Document, then Advanced, then New connector…. The dialog is Add a connector; connectors are grouped by kind. Pick one. Only an owner can load the list.
The connector opens as a document. Fill in Settings.
Turn on Connector active, then press Save.
Setting | What it does | Default | Risk |
|---|---|---|---|
Connector active | A switched-off connector does not run | Off | A required secret may be left empty while it is off. Turning it on needs everything |
Secret fields | Stored encrypted, never shown again. Leave blank to keep the stored value | n/a | Pressing Save with a changed secret replaces it |
Account connection, Connect account | OAuth sign-in in a pop-up (amoCRM). Disconnect forgets the token here only; revoke it in the provider too | Not connected | Pop-ups must be allowed |
Test connection | Tests the values on screen against the provider. Shown when the connector has secret fields | n/a | A passing test is not a guarantee of correct table mapping |
Webhook URL | Paste it into the provider so it can send events | n/a | The address contains a secret token. Treat it like a password |
Run on schedule, Frequency, Cron (5-field) | Runs it on a timetable. Choices run from Every 15 minutes to Every Monday at 06:00, or Custom… | Off | Each run calls the provider |
Run now | Saves, then runs once, ignoring the active and schedule switches | n/a | It really runs; imports write rows |
Run history | Each run: Manual, Scheduled, Webhook, Follow-up or Action, OK or Error, with log lines, Request and Result | n/a |
Without Owner the editor shows Only a project owner can change connector settings. Delivery, marketplace and payments use their own editors with the same rights. Their labels are written in English in the component, not in the interface strings.
The connectors
Connector (gallery group) | What it connects | You need | Where configured |
|---|---|---|---|
amoCRM (CRM) | Imports companies, contacts and leads into your tables. Import only; re-runs update, never duplicate | Account subdomain, domain, sign-in by OAuth (an administrator registers the app) or a long-lived token; a target table and field mapping per entity | Generic editor with tabs, plus a custom-fields panel. Schedule suggests hourly |
Delivery (Delivery) | Carrier rates at checkout, shipments, labels. Carriers listed: Yandex Доставка (pickup point / courier) and (express courier) | Carrier credentials, a sender address, a default package | Own editor |
Email (IMAP / SMTP) (Messaging) | Copies a mailbox into a table, attachments as files; sends mail over SMTP | IMAP server, mailbox address and password; optional SMTP; a Messages table and field mapping | Generic editor with tabs. Schedule suggests every 5 minutes |
Geocoder (Geocoding) | Address suggestions in forms, optional standardisation (DaData) | DaData API key; secret key only for standardisation | Generic editor. Forms then pick it under Geocoder connector |
Mango Office (Telephony) | Calls and recordings from a Mango VPBX into a Calls table, for transcription | VPBX API key and salt; the table and its columns | Generic editor, webhook and schedule |
Marketplace (Marketplaces) | Publish the catalogue, import listings, sync stock and price. Listed: Ozon | Marketplace credentials; a catalogue to bind | Own editor, tabs Connection, Binding, Sync, Updates history |
1C OData (Other) | Imports 1C catalogues and documents, creates draft documents back | Base URL ending | Generic form plus a 1C panel; schedule suggests hourly |
Payments (Payments) | ЮKassa, Stripe, Yandex Pay, T-Bank, or test mode (no real money) | Provider keys; Stripe connects by hosted onboarding | |
Speech-to-Text (Speech-to-text) | Transcribes audio with speaker labels | Yandex SpeechKit API key and optional folder id, or the self-hosted GigaAM engine (administrator) | Generic editor |
Email (IMAP / SMTP) has two switches, Accept an untrusted certificate and Allow a private network address.
Careful: leave them off unless your administrator tells you otherwise. They weaken the checks on the mail server you connect to.
App connections
New app connection… (same menu) binds a custom front-end app to the space. It is for developers. Its Connectors tab chooses which connector fills each slot the app asks for, for example "take a payment". See the business guide.
How to check it worked
Channel: send a message in from outside; it appears under Unread in the inbox. Check the state line (WhatsApp session, Resend webhook) first.
Connector: press Test connection, then Run now, then open Run history and read the newest run.
Undo / what can go wrong
Removing a channel. Remove first asks you to confirm and says what happens to the channel's conversations. The webhook is taken down on a best-effort basis (above). Existing conversations stay in the inbox with their history but lose their link to the channel. Email conversations can still be answered: the reply goes out through another enabled email address of the space (if there is none, it is still sent, without a reply-to address). Telegram, WhatsApp and MAX conversations cannot: the reply box is greyed out and says the channel was removed and should be added again in Inbound Messaging. Once you add the channel again, each conversation reconnects to it the next time its customer writes, and replies work again; until the customer writes, it stays unanswerable. Finish with a channel's open conversations before you remove it.
Duplicate imports. Mapping the wrong id column makes every re-run create copies. Map the id column first.
A ban. Quick-connect WhatsApp cannot be made safe; stop using it.
A webchat: entry appears in the channel list once you enable and save Live Chat, for example webchat:12 (the number is your space's id). It is the chat widget's own channel, created for you and shown as plain text with the mail icon. Leave it alone: visitors' messages are accepted only while it exists and is enabled, otherwise the widget reports Chat is not configured for this site. Saving Live Chat again with the widget on creates or re-enables it.