Scan business cards from Slack
- Trigger
- π·:camera:
- Lands in
- Thread, plus new contacts
- Setup
- 2 min
- Needs
- Via invited to the channel
- 1Upload a photo
Post an image of business cards to any Slack channel with the Viably OCR power enabled. A phone photo is fine, whether it is one card or a stack of them.
- 2React with the camera
Add a
:camera:or:camera_with_flash:reaction to the message. Viably detects it, downloads the image, and submits it to the OCR service. - 3Extraction happens asynchronously
Viably posts a queued confirmation in the thread immediately. The OCR service processes the image and POSTs the structured result back through your OCR relay endpoint.
- 4Results appear in the thread
Viably posts a formatted contact table covering name, role, company, phone, and email, then uploads a nine-column CSV with everything it extracted, all inside the original thread.
- AEnable the OCR power in your workspace
Go to Powers β OCR in your Viably dashboard and add the Slack channels where scans should be accepted. Viably ignores camera reactions in channels that are not on this list.
- BCreate an OCR relay endpoint
Go to Powers β Webhook Relay and click New Relay β OCR Service. Copy the relay URL and Bearer token, then hand both to your OCR service so it can POST results back to Viably. Unlike other relay types, OCR endpoints need no destination channel, because results go straight into the thread that triggered the scan.
- CConfigure your OCR service
Give your OCR service the relay URL and Bearer token from step B. When processing finishes, the service POSTs the structured result back to that URL. The payload format below gives the exact shape.
Payload format
When your OCR service finishes processing, it POSTs a JSON payload to the relay URL with Authorization: Bearer <token>. You do not need to implement this yourself, because Viablyβs own OCR service handles it for you.
message fieldFor ocr_type: "business_cards" it is a string of pipe-delimited rows.
- One contact per line, with
\nseparating rows. - Fields separated by a pipe,
|. - Exactly nine fields per row, in the order given below.
- A field may contain
,for multiple values, such as two phone numbers.
If your OCR service processes a large image in chunks, set part to "1/3", "2/3", "3/3". Viably accumulates each chunk, posts a table per part, and uploads the combined CSV once every part has arrived.
The 9 fields
Every business_cards row must carry exactly nine pipe-separated values, in this order. Leave a field empty by writing nothing between the pipes.
The Slack table shows only the first five fields, covering name, role, company, phone, and email, to keep it readable. The downloadable CSV always contains all nine columns.
What you get in Slack
All output is posted as a reply in the original thread, never in the channel itself.
- 1Queued confirmation
Immediately after you react with the camera, Viably posts a message listing which images were queued for processing.
- 2Contact table, one per part
As each result arrives, Viably posts a monospace table showing name, role, company, phone, and email for every contact in that part.
- 3CSV download on completion
Once all parts are received, Viably uploads a
contacts-<job_id>.csvfile to the thread. It contains all nine fields for every extracted contact and is ready to import into any CRM or spreadsheet.
Photograph them, post the photo in an OCR-enabled channel, and react with the camera emoji. Viably reads every card in the image and returns one CSV, which is the difference between an evening of typing and a two-minute job.
Nine columns: name, title, company, email, phone, whatsapp, website, address, and notes. The table posted in Slack shows the five that matter at a glance, and the CSV carries everything for import elsewhere.
As a reply in the original thread, never in the channel itself, so a scan does not interrupt whatever else the channel is doing.
The CSV is yours to import wherever you like. If you want contacts captured automatically and joined to leads and payments, that is what the Contacts workspace does through Webhook Relay.
Enable the OCR power for a channel. Business card scanning runs inside Slack, with no separate app for your team to install.
Add Viably to Slack