Satchelwell for Magento and Adobe Commerce: setup and user guide
What Satchelwell does
Satchelwell shows the requester's Magento orders in the Zendesk ticket sidebar (and on user profiles): items, totals, payment, shipments with tracking, invoices, credit memos, Adobe Commerce returns and comment history, with their lifetime value and average order. Agents you allow can refund with a credit memo, cancel an order, put it on hold or release it, add an order comment and resend the order, invoice, shipment or credit memo email. Every action asks for confirmation first and is logged on the ticket as an internal note.
Works with Magento Open Source and Adobe Commerce 2.4, self-hosted or on Adobe Commerce cloud infrastructure.
1. Create an integration in Magento
In the Magento admin: System > Extensions > Integrations > Add New Integration.
| Field | Value |
|---|---|
| Name | Satchelwell for Zendesk |
| Your Password | Your admin password (Magento asks for it to save) |
| API > Resource Access | Custom, with the resources below |
Save, then click Activate and Allow. Magento shows four values; copy the Access Token (the other three are not needed). If you ever click Reauthorize, Magento issues a new access token: paste the new one into Satchelwell.
What each resource allows in Satchelwell (leave out the actions you do not want agents to take):
| Satchelwell feature | Magento resource (API tab) | REST endpoint |
|---|---|---|
| Customer accounts by email | Customers > All Customers | GET /V1/customers/search |
| Orders, totals, items, comments | Sales > Operations > Orders > Actions > View | GET /V1/orders |
| Shipments and tracking | Sales > Operations > Shipments | GET /V1/shipments |
| Invoices | Sales > Operations > Invoices | GET /V1/invoices |
| Credit memos, and refunds | Sales > Operations > Credit Memos | GET /V1/creditmemos, POST /V1/order/{id}/refund, POST /V1/invoice/{id}/refund |
| Returns (Adobe Commerce only) | Returns | GET /V1/returns |
| Cancel | Sales > Operations > Orders > Actions > Cancel | POST /V1/orders/{id}/cancel |
| Hold and release | ... > Actions > Hold, Unhold | POST /V1/orders/{id}/hold, /unhold |
| Order comments | ... > Actions > Comment | POST /V1/orders/{id}/comments |
| Resend the order email | ... > Actions > Send Order Email | POST /V1/orders/{id}/emails |
| Resend invoice, shipment, credit memo emails | Invoices, Shipments, Credit Memos | POST /V1/invoices/{id}/emails, /V1/shipment/{id}/emails, /V1/creditmemo/{id}/emails |
2. Let Magento accept the token from Zendesk
Since Magento 2.4.4, an integration's access token is only accepted as a bearer token when the
store allows it. In the Magento admin go to Stores > Configuration > Services > OAuth >
Consumer Settings and set Allow OAuth Access Tokens to be used as standalone Bearer tokens to
Yes (uncheck "Use system value" first), then save. On Adobe Commerce cloud infrastructure you
can set the same option in the admin, or have your developer set
oauth/consumer/enable_integration_as_bearer to 1 in the deployed configuration.
Without it, every request answers "did not accept the integration token", and the sidebar says so.
Not supported: Adobe Commerce as a Cloud Service (the SaaS edition), which signs in only with Adobe IMS and has no integration tokens.
3. Store requirements
- HTTPS with a valid certificate (Zendesk's proxy requires a complete certificate chain).
- Zendesk can reach the store. Requests come from Zendesk's servers, not the agent's browser.
If Fastly, Cloudflare, a WAF or the host's firewall blocks unknown servers, allow Zendesk's IP
ranges (Zendesk's article "Configuring your firewall for use with Zendesk",
https://support.zendesk.com/hc/en-us/articles/4408842860186) for the
/rest/path. - Nothing is installed in Magento: no extension, no module.
4. Install and connect
- In the Zendesk Marketplace, open Satchelwell and choose Install, then the Standard plan. The 14-day trial starts and Zendesk asks for a card. Billing starts when the trial ends unless you uninstall.
- Store domain: the domain only, in lowercase, for example
shop.example.com(nohttps://, no path, no port). Satchelwell's manifest tells Zendesk to send the token only to the domain in this setting, so it has to match the store's address exactly. - Base path: only if Magento is served from a sub-folder, for example
/shopforhttps://example.com/shop/. Leave empty otherwise, and never add/restor/index.php. - Integration access token: paste it. Zendesk stores it as a secure setting: it is never sent to agents' browsers.
- Admin URL (optional): your admin address, like
https://shop.example.com/admin, for the "Open in Magento" links. Nothing is sent there. - Save. Open any ticket whose requester has ordered from the store.
5. Settings
- Several websites and store views: one installation works as it is: every order shows its
store view. Store views per brand narrows a brand's tickets to its own store views first:
360001: 1, 2; 360002: 3means brand 360001 sees store views 1 and 2, brand 360002 sees store view 3 (the store view id is in the URL of Stores > All Stores > the store view). Agents can always click "Show all store views". - Several Magento installations: fill in the domain, token and name for store 2 and 3. Brands for this store takes Zendesk brand ids (Admin Center > Account > Brand management; the id is in the brand's URL). A ticket opens the store that lists its brand (or maps it to store views), otherwise the store with no brand list, otherwise store 1. Agents can switch stores.
- Who may take actions:
admin(default),agent(everyone), custom role ids (Admin Center > People > Roles; the id is in the role's URL) orgroup:<id>, separated by commas. Everyone else sees orders read-only. Example:admin, group:360004512345. - Allow refunds, Allow cancel and hold, Allow order comments, Allow resending emails: turn each action type on or off for everyone.
- Largest refund without an admin: in the order's currency (100 means $100.00 or 100 euros). Admins have no limit. 0 removes the limit.
- User field with the Magento customer id: the key of a Zendesk user field (Admin Center > People > User fields) that holds the Magento customer id. Use it when customers write in from an address that is not on their account. Matching by every email on the Zendesk user always runs as well.
6. Using the sidebar
- Matching: Satchelwell looks up every email address on the requester's Zendesk profile: customer accounts with that address on every website, and every order placed with that address (guest checkouts included) or by those accounts. Each result is checked against the exact addresses before it is shown.
- The customer card: lifetime value and average order (paid minus refunded, per currency), customer since, open orders and refunded totals. "(last N orders)" under the value means the customer has more orders than the sidebar reads (50), so the value is a minimum.
- An order: click it to see items with SKUs and what has shipped, been refunded or canceled, totals with the discount and coupon, payment, shipping method and address, shipments with carrier and tracking number, invoices, credit memos, returns (Adobe Commerce) and comments. Open in Magento opens it in the admin when an admin URL is set.
- Insert status in reply: adds the order number, status, carrier and tracking number to the reply you are writing. You still review and send the reply yourself.
- Lookup: type an order number (
000000123,#123or with your prefix) or an email in the box at the bottom.
7. Actions
Each action opens a panel inside the order, states exactly what will happen, and is sent only when the agent clicks the confirm button. Afterwards Satchelwell adds an internal note to the ticket and a tag. Actions are offered only when Magento allows them for the order's state.
| Action | What happens in Magento | Tag |
|---|---|---|
| Refund | A credit memo for the lines and quantities you pick, shipping, an adjustment refund and an adjustment fee. Online refunds the payment through the payment method on the order's paid invoice; Offline records it for money returned another way. Optional: return the items to stock, email the credit memo. A full refund closes the order. The credit memo's comment carries the Zendesk ticket number. | satchelwell_refund |
| Cancel order | Cancels everything not yet invoiced and returns stock. Not offered for fully invoiced orders (refund instead). | satchelwell_cancel |
| Hold, Release hold | Puts the order on hold (nobody can invoice, ship, refund or cancel it) or releases it to its previous status. | satchelwell_hold, satchelwell_unhold |
| Add comment | A comment for your team, visible to the customer in their account, or emailed to the customer. | satchelwell_order_comment |
| Resend email | The order confirmation, an invoice, a shipment (with tracking) or a credit memo email, with your store's templates. | satchelwell_email |
The credit memo total is worked out by Magento from the lines, tax, discounts, shipping and adjustments; the panel shows Satchelwell's estimate, which can differ by a cent or two. Magento refuses any credit memo above what is left on the order.
If the store's answer gets lost (a timeout or a server error), Satchelwell never sends the action again on its own. It reads the order again: if the change is there, it reports success and logs it; if not, it says nothing changed and the agent can try again. Magento does not record email resends, so a lost answer there is reported as unknown and is not sent again automatically.
8. Troubleshooting
| Message | Fix |
|---|---|
| "did not accept the integration token" | Section 2 (the bearer switch), then check the integration is active, the token is current (a Reauthorize makes a new one), and it has the resource the message names. |
| "A firewall or CDN ... blocked Zendesk" or "answered with a web page" | Allow Zendesk's IP ranges for /rest/ (section 3). |
| "REST API was not found at ..." | Check the store domain and base path. |
| "Magento declined to ..." | The order changed in the admin meanwhile. Click Refresh. |
| "The store domain must be the host name only" | Remove https://, any path and any trailing slash. |
| No orders for the requester | Look the order up by number, add the customer's other address to their Zendesk profile, or use the user field mapping. |
| No returns shown | Returns exist on Adobe Commerce only, and the integration needs the Returns resource. |
9. Plan and billing
Standard: $5 per agent per month, billed monthly by Zendesk. 14-day trial; Zendesk asks for a card at install and billing starts when the trial ends unless you uninstall. No free plan.
10. Data
Satchelwell reads orders only while an agent has the sidebar open, keeps nothing after it closes, has no export and no server, and sends nothing to Great Work. Details: https://greatwork.company/apps/satchelwell-for-magento-and-adobe-commerce/privacy.
11. Uninstalling
Uninstall in Admin Center > Apps and integrations > Zendesk Support apps. The stored tokens are
deleted. Delete the integration in Magento (System > Extensions > Integrations) as well. Internal
notes and satchelwell_* tags on tickets stay.
Support: hello@greatwork.company, reply within one business day.
Adobe, Adobe Commerce and Magento are either registered trademarks or trademarks of Adobe in the United States and/or other countries.