Morph Embedded · for software companies
Let your customers bring their data into your product, clean
Morph Embedded puts Morph's importer inside your product. Your customers upload a CSV or Excel file, match its columns to your fields and fix what's wrong, and you receive clean records in your format. Set it up in Settings with no code, or call it from your servers. Records are held only until they reach you, never more than 24 hours.
What your customers see
An importer with your name on it
Customers stop emailing you spreadsheets for someone to fix. They load their own data, in four steps, and only valid records reach you.
1. Upload
Your customer drops in a CSV, TSV or Excel file of up to 50 MB. Morph finds the header row and asks which sheet of a workbook to use. A template of your fields is there to download first.
2. Match the columns
Morph matches their columns to your fields by name, by the other names you gave each field and by what is in them, and AI suggests the ones left for your customer to check. A customer's matches are remembered for their next file laid out the same way.
3. Fix what's wrong
Rows with problems come first. Your customer edits a value in place, fixes a whole column at once (a date format, a decimal mark, a value for empty cells), or skips the row.
4. Send
Only valid records are sent, in your fields and formats. Your customer sees the counts, and you get the records where you chose.
Import invoices
Your logo- Upload
- Match
- Fix
- Send
brook-supplies-march.xlsx · 1,202 rows
| Their column | Your field |
|---|---|
| Inv No | invoice_number |
| Cust | customer_name |
| Amt (GBP) | amount |
| Due | due_date · DD/MM/YYYY |
3 rows to fix next · 1,199 ready to send
No code
Set up in Settings, without a developer
Everything happens in Settings, Morph Embedded. A set-up guide at the top ticks off each step as you go.
- 1
Switch it on
An owner or admin opens Settings, Morph Embedded, switches it on and says how you'll use it: an importer in your product, the engine from your servers, or both.
- 2
Describe your data
Start from a sample of what your customers send. Morph fills in a field per column; you add the other names each one goes by, value translations (PD = paid) and date formats.
- 3
Make it look like yours
Your name, colour and logo on the importer, with or without 'Powered by Morph'.
- 4
Try it
Open the importer exactly as your customers will see it. Nothing is sent. Map a sample once and make that the standard for every customer.
- 5
Put it in front of customers
Paste two lines into your website builder (Webflow, WordPress, Bubble, Softr or plain HTML), or make a link and send it by email.
- 6
Choose where the data goes
Into your app, through a connector built from its API docs, or where your system picks files up: a Google Sheet, Google Drive, OneDrive, SharePoint or SFTP. Email alerts tell you when an import arrives.
A button for any website: two lines
Paste them where your site builder takes custom code. The importer opens only on the websites you list.
<script src="https://morph-vereon.com/embed/importer.js" data-vendor="pv_…" async></script>
<button data-morph-import="Invoice">Import invoices</button>No website change at all? Make a link for a customer and send it by email. It works for 14 days and can be switched off at any time.
Where the data goes
- Your app: build a connector from its API docs in Morph, match the fields once, and each record is written straight into it
- A Google Sheet: rows added under the columns of the same names
- Google Drive, OneDrive, SharePoint or SFTP: each import saved as a CSV file where your system picks files up
- Your own server: a signed webhook, or your server collects each import by its id
Every import keeps a log for 30 days: which rows had problems and why, what your app refused, and where the records went. Your customers read their own in the importer, so they can fix a problem without asking you; you see every customer's in Settings, or fetch them from the API to show in your product. Alerts go to up to 10 addresses and carry counts and names, never values.
Connect
Or let them connect the systems they already use
Some customers would rather connect their accounting or CRM system than export a file. With Connect they sign in to it from your product once, and their records keep arriving: only what changed, on your schedule, mapped into your fields and delivered to the same place as their imports.
- Xero (through your own Xero app), QuickBooks, Sage, Sage 200, HubSpot, Salesforce, Zoho CRM, Books and Invoice, and Odoo
- Any other system with an API: build its connector from its docs in Morph and offer it beside these
- Morph knows each system's fields, so an invoice from Xero, QuickBooks or Sage lands in your Invoice by itself, from the first customer on
- You choose in Settings which records come in and into which of your data types: Xero invoices into your Invoices, say
- Every hour, every six hours or once a day, only what changed since the last time
- Morph keeps the sign-ins fresh; if one stops working, your customer is asked to reconnect and your team is told
- One more line on your website, next to the importer's button, or a call from your page
- Your customers see what came in, and when, in the same window
- Write back too: your server sends a customer's records and Morph adds them to their system, such as new customers in their Xero
For developers
The same importer, and the engine behind it, from your servers
When you want more control, a developer adds it later, on top of what is set up in Settings. Every call takes a server key: shown once, up to 10 active at a time so you can rotate one without downtime, and 600 calls a minute each.
Sessions from your server
One call starts a 15-minute importer session for one of your signed-in customers, and adds that customer the first time. The importer can ask your server for a new session when one runs out.
The engine: one call per file
Send a file from your own system: inline up to 4 MB, or by URL up to 50 MB. Morph maps it with the customer's saved mapping, then your standard, then its own matching. When it isn't sure, it asks a question instead of guessing.
Your own checks
Give Morph a checks address. While your customer fixes their file, Morph sends you the rows, up to 500 at a time, and shows your answers as problems to fix, such as a customer number you don't recognise.
Create or update
Mark the field that is a record's id in your system. Each record then arrives marked as new or as an update, and the importer shows your customer which is which.
Signed webhooks, or collect
Records arrive in parts of 500, each signed with HMAC-SHA256 and retried for up to 24 hours until you accept it. Or your server collects each import by its id.
Straight to your page
With direct delivery, the importer works in your customer's browser and hands the clean records to your page. They never reach Morph's servers.
An audit log
Who changed what in Settings, which server key did what, every import's counts, and every connection made or removed, kept for 400 days with no values. In Settings, and from your server.
OpenAPI and Postman files included. Settings has the API as an OpenAPI file and a Postman collection, and Node, Python and curl examples filled in for your account. In Try the engine, a sample file goes through it and you see the mapping and the clean records, with nothing kept.
Nothing kept
Your customers' data passes through. It doesn't stay.
Held only until it reaches you
Records are deleted as soon as they are delivered (written to your app, sheet or folder, accepted by your webhook, or collected by your server), and after 24 hours at the latest. Import logs keep what happened for 30 days (counts, which rows had problems and why), never the values.
Or never on Morph's servers
With direct delivery the records go from your customer's browser to your page. Your own checks can run in the page too.
Each customer kept apart
Every session belongs to one of your customers, and every query Morph makes is held to that customer. Suggestions learn column names from your other customers' confirmed mappings, never their values.
AI that never reads the records
When Morph's own matching can't place a column, AI suggests one from its header and the shape of its values (like AAA-9999), or a short list of codes such as PD. Never names, notes or whole rows, and your customer checks every suggestion. You can switch it off.
Keys and samples stay with you
A server key is shown once and Morph keeps only a hash of it. The sample file you describe your data from is read in your browser, not uploaded.
Off means off. Switch Morph Embedded off and your server keys are refused and the importer closes at once. Your keys, fields and settings are kept for when you switch it back on.
FAQ
Questions about Morph Embedded
Who can set up Morph Embedded?
An owner or admin of a Morph organisation. Choose a business account when you sign up, then open Settings, Morph Embedded and switch it on. Nothing on the way needs a developer: a sample file, two lines for your website or a link, and a place for the data.
Which files can my customers upload?
CSV, TSV and Excel (.xlsx and .xls) files of up to 50 MB, with up to 1,000,000 rows and 500 columns. A workbook with several sheets asks which one to use, and the header row is found wherever it is.
Does Morph keep my customers' files or records?
No. Records are held only until they reach you, and at most 24 hours; then they are deleted. Each import's log keeps what happened for 30 days (counts, which rows had problems and why), never the values. With direct delivery, the records never reach Morph's servers at all.
Can my customers see what happened to their import?
Yes. Every import keeps a log: which rows had problems and why, what your app refused, and where the records went. Your customers open their own under Your imports in the importer; you see every customer's in Settings, and your server can fetch them to show in your product.
Can one customer see another's data?
No. Every session belongs to one of your customers, and every query Morph makes is held to that customer. Mapping suggestions learn only column names from other customers, never their values.
Do we set up the mapping for every customer?
No. Describe your fields once, with the other names they go by. Map a sample in Try it and choose Make this the standard, and every file with those columns maps itself. Each customer's own confirmed mapping is remembered for their next file laid out the same way.
Does the importer show our brand?
Yes. Set a display name, a colour and a logo, and choose whether to show 'Powered by Morph'. The importer opens over your page (full screen on phones), and only on the websites you list.
Can my app write into my customers' systems?
Yes. In Settings, choose which of your data types goes into which of a system's records (customers, suppliers or items in Xero, QuickBooks, Sage and Zoho, or any record your own connector creates) and fill its fields from yours. Your server then sends a customer's records, and Morph writes them into that customer's connected system once, with a log of what went in and what the system refused. Customers are told when they connect.
Does Morph use AI on our customers' data?
Only for what its own matching can't place, and never on the records themselves: the model sees column headers, the shape of the values (like AAA-9999) and short lists of codes (like PD and UNP), never names, notes or whole rows. Your customer sees every match before anything is sent. It uses your plan's Murphy allowance, and you can switch it off.
Can my customers connect their own accounting system instead of uploading a file?
Yes, with Connect. Your customers connect their own Xero, QuickBooks, Sage, Sage 200, HubSpot, Salesforce, Zoho or Odoo inside your product (one more line on your website, or a call from your page), signing in with that system as usual. You choose in Settings which records come in and into which of your data types, every hour, six hours or day; each time, only what changed arrives, mapped and delivered like an import.
Give your customers a clean way in
Sign up with a business account · switch on Morph Embedded in Settings