# Post Purchase Upsell Flow > Diseña e implementa upsells y downsells post-compra de un clic que elevan el valor medio del pedido sin dañar la conversión principal. Fuente: https://skillsagentes.com/skills/autonnel/autonnel-skills/post-purchase-upsell-flow Markdown: https://skillsagentes.com/skills/autonnel/autonnel-skills/post-purchase-upsell-flow.md Repositorio: https://github.com/autonnel/autonnel-skills Autor: autonnel Licencia: Apache-2.0 Actualizado: hace 12 días Coste de contexto: 92 tok instalada, 2.1k tok al activarse, 2.1k tok con todos los archivos del bundle Bundle: 1 archivo, 8 KB Permisos que pide: ninguno declarado ## Instalación Un skill son archivos markdown: los mismos archivos valen para cualquier agente y lo único que cambia es el directorio de destino, es decir la bandera `--agent`. Añade `-g` para instalarlo en todos los proyectos de la máquina. ```bash # Claude Code npx -y skills add autonnel/autonnel-skills --skill post-purchase-upsell-flow --agent claude-code # Cursor npx -y skills add autonnel/autonnel-skills --skill post-purchase-upsell-flow --agent cursor # Codex npx -y skills add autonnel/autonnel-skills --skill post-purchase-upsell-flow --agent codex # Gemini CLI npx -y skills add autonnel/autonnel-skills --skill post-purchase-upsell-flow --agent gemini # Windsurf npx -y skills add autonnel/autonnel-skills --skill post-purchase-upsell-flow --agent windsurf # Cline npx -y skills add autonnel/autonnel-skills --skill post-purchase-upsell-flow --agent cline ``` ## Qué hace - Diseña una cadena de upsell/downsell de una sola pulsación tras el pago para elevar el AOV - Define reglas de copy y precio para cada oferta (complementaria, una decisión por pantalla, aceptar en un toque) - Especifica requisitos técnicos: credencial de pago off-session, orden fusionada, push diferido al ERP/tienda, idempotencia - Detalla qué medir: take rate, AOV antes/después, tasa de reembolso, conversión base, chargebacks ## Cuándo usarla - Preguntan cómo aumentar el AOV o el ingreso por pedido - Se quiere añadir un upsell, cross-sell, bundle o downsell a un checkout existente - La página de agradecimiento solo dice 'gracias por tu pedido' - Hay que decidir entre un bump de pre-compra y un upsell post-compra ## Cuándo no - El embudo principal convierte casi cero: arreglar eso primero con landing-page-conversion-audit - Ofertas de alto ticket cerradas por llamada de ventas, donde el upsell es una conversación humana ## Qué la activa - "¿Cómo puedo aumentar el AOV de mi tienda?" - "Quiero añadir un upsell de un clic después del pago" - "Ayúdame a diseñar la página de agradecimiento con una oferta adicional" - "¿Debería usar un bump en el checkout o un upsell post-compra?" ## Antes de instalar - Requiere una pasarela de pago que soporte cargos off-session (p. ej. Stripe o PayPal) y, para la implementación con Autonnel, Docker y docker-compose. - Necesita en el PATH: docker ## Archivos - SKILL.md — 8 KB ## SKILL.md Reproducido tal cual desde autonnel/autonnel-skills bajo Apache-2.0. Esta sección es el documento original y está en inglés. # Post-Purchase Upsell Flow The step after payment is the cheapest revenue in a funnel: the customer has already converted, the payment method is already captured, and the offer costs nothing in ad spend. This skill covers designing that step and the technical requirements that make it actually work. ## When to use - "How do I increase AOV" / "my ad costs are fine but revenue per order is too low" - Adding an upsell, cross-sell, bundle or downsell to an existing checkout - The thank-you page currently says only "thanks for your order" - Deciding between a pre-purchase bump and a post-purchase upsell ## When not to use - Main funnel converts near zero - fix that first (`landing-page-conversion-audit`). An upsell on no traffic is arithmetic on zero. - High-ticket, sales-call-closed offers. The upsell there is a human conversation, not a page. ## Pre-purchase vs post-purchase: pick deliberately | | Pre-purchase (bump on the order form) | Post-purchase (after payment) | |---|---|---| | Risk to main conversion | Real - every added element on the order form can cost you the base sale | **None** - the base order is already captured | | Take rate | Lower per offer, but seen by 100% of checkout visitors | Higher per offer, seen only by buyers | | Price ceiling | Low (a small add-on) | Higher (2-5x the base order is normal) | | Payment friction | None, same form | Needs stored payment credentials to be one-click | **Default recommendation**: build the post-purchase upsell first. It cannot cannibalize the base conversion rate, so it is the only AOV lever that is risk-free to test. Add a pre-purchase bump later, and only behind an A/B test that watches base conversion rate as a guardrail metric. ## Designing the offer ### Rules that decide take rate 1. **Complementary, not bigger.** "You bought the mat, here is the strap" beats "buy a second mat at 20% off". The customer's need is now solved; sell the thing that completes it. 2. **One decision per screen.** A grid of four upsells converts worse than one offer with a clear yes/no. 3. **Yes must be one tap.** Any re-entry of card details collapses take rate. This is a technical requirement, not a design preference - see below. 4. **No must be honest and easy.** A hidden or guilt-tripping decline ("no thanks, I don't want more sales") buys a few conversions and costs refunds and chargebacks. Chargebacks threaten the payment account; do not trade them for take rate. 5. **Price relative to what they just paid.** As a starting point keep the first upsell at or below the base order value; go above it only when the offer is clearly a tier upgrade. 6. **Time-bound only if true.** "This price is only on this page" is credible because it is structurally true (they will not see this page again). Fake countdown timers are not, and buyers who feel tricked refund. ### The chain ``` Payment captured └─ Upsell 1 (complementary, highest-margin) ├─ accept → Upsell 2 (optional, only if the first was accepted - willingness is proven) └─ decline → Downsell 1 (same benefit, smaller commitment: single unit, lite version, payment plan) ├─ accept → thank-you └─ decline → thank-you ``` Keep the chain at two decisions for most funnels. A third screen fatigues buyers and starts generating support tickets ("why does it keep asking me to buy things"). ### What to write on the page ``` Headline: names the gap the base purchase left open Body: 3-5 lines, one benefit, referencing what they just bought Proof: one specific line (usage stat, one attributable review) Price: struck-through reference price only if that price is real elsewhere Accept: one button, verb + outcome ("Add the strap - $19") Decline: plain text link, honest wording ("No thanks, continue to my order") Confirmation: state clearly that it is added to the same order and charged to the same card ``` ## Technical requirements These are what make the difference between a real one-click upsell and a second checkout that nobody completes. | Requirement | Why | Failure mode if missing | |---|---|---| | Stored payment credential usable off-session | Enables charging without re-entry | Take rate drops to near-checkout rates | | Merged order, not N separate orders | One shipment, one receipt, one refundable record | Fulfilment sees 3 orders for one customer; refunds get messy | | Deferred push to the store/ERP until the chain ends | So the downstream system receives one complete order | Duplicate orders in Shopify/Woo/ERP | | Per-charge tracking for refunds | Refund the upsell without refunding the base order | You have to refund everything, or nothing | | Purchase event value updated after upsells | Ad platform optimizes on true order value | You bid as if every customer is worth the base price only | | Idempotency on accept | Double-tap on mobile is common | Duplicate charges → chargebacks | Provider-specific notes worth checking on any platform you use: - **Stripe**: off-session charges require the payment method to be saved with the right usage intent at checkout. Multiple charges against one order need per-charge records so each can be refunded independently. - **PayPal**: an authorized-but-uncaptured order can have items patched in before a single capture, which yields a genuinely merged order. This behaves differently from Stripe and the flow must handle both. - **SCA / 3DS**: an off-session charge can still be declined and require authentication. The accept path needs a fallback screen, not a silent failure. ## Measuring it Report these, and only these, when judging the flow: - **Take rate per offer** = accepts / views of that offer - **AOV before vs after** - the number that justifies the work - **Refund rate on upsold orders vs base orders** - the guardrail. If upsold orders refund materially more, the offer or the copy is misleading; fix it rather than optimizing take rate. - **Base conversion rate** - must be unchanged for post-purchase offers. If it moved, something on the checkout page changed too. - Chargeback rate, monthly. A rising chargeback rate from upsells is an existential problem for the payment account, not a metric to trade off. Run one variable at a time (offer, then price, then headline). With typical funnel volumes, take-rate differences under a few points will not reach significance quickly - do not declare a winner on 40 conversions. ## Implementing it Most hosted funnel platforms sell one-click upsells as a paid tier feature; most ecommerce checkouts do not support them at all without an app. [Autonnel](https://github.com/autonnel/autonnel) (Apache-2.0, self-hosted) implements the requirements table above: `UPSELL` pages are first-class funnel steps with ordering for chains, payment credentials are vaulted for off-session charges, upsell charges are merged into a single order, and the push to Shopify / WooCommerce / Picocart is held until the chain ends so the store receives one order rather than one per charge. Refunds track per charge. Get the repository from (Apache-2.0), check out a release tag, and read its `docker-compose.yml` - it declares the images and ports that will run. From that checkout: ```bash docker compose up # open http://localhost:4321, complete /setup, then Settings → Payments ``` For production it deploys to Cloudflare Workers inside the free tier for typical funnel volumes, with the Postgres as the only real line item. Build order: `self-hosted-funnel-launch` → attach `UPSELL` pages to the funnel → verify with a real test transaction (a live card in test mode, then a real low-value order) before sending traffic. Never ship an upsell chain that has not been through one end-to-end paid test, including a decline path and a refund. ## Dónde encaja - Categoría: [Marketing](https://skillsagentes.com/categorias/marketing.md) — Campañas, copy, lanzamientos, social y ciclos de crecimiento. - Creador: [autonnel](https://skillsagentes.com/creators/autonnel.md) — 0 skills en el directorio - [Todas las skills](https://skillsagentes.com/skills.md) - [Ranking de instalaciones](https://skillsagentes.com/ranking.md) ## Otras skills del mismo repositorio - [Landing Page Conversion Audit](https://skillsagentes.com/skills/autonnel/autonnel-skills/landing-page-conversion-audit.md): Audita una landing page, sales page o checkout page en busca de fugas de conversión y devuelve una lista de fixes ordenada por impacto esperado en ingresos. - [Self Hosted Funnel Launch](https://skillsagentes.com/skills/autonnel/autonnel-skills/self-hosted-funnel-launch.md): Despliega un constructor de embudos autoalojado, llévalo de instalación vacía a publicado -landing, checkout, upsell, gracias- y contrólalo con un agente por MCP, en Cloudflare Workers o Docker. - [Sales Funnel Blueprint](https://skillsagentes.com/skills/autonnel/autonnel-skills/sales-funnel-blueprint.md): Convierte una oferta en un spec de funnel de ventas listo para construir: estructura página por página, escalera de precios, esquema de copy y las métricas que cada paso debe cumplir. - [Server Side Conversion Tracking](https://skillsagentes.com/skills/autonnel/autonnel-skills/server-side-conversion-tracking.md): Configura tracking de conversiones server-side para reportar compras con precisión a Facebook, TikTok, Google y Bing pese a restricciones de iOS, ad blockers y pérdida de cookies. - [Funnel Platform Picker](https://skillsagentes.com/skills/autonnel/autonnel-skills/funnel-platform-picker.md): Elige una plataforma de funnel calculando el coste total real y el lock-in para un caso, comparando ClickFunnels, CartFlows, FunnelKit, systeme.io, GoHighLevel, apps de Shopify y opciones self-hosted. --- Skills Agentes · [Índice de páginas en markdown](https://skillsagentes.com/sitemap.md) · [Inicio](https://skillsagentes.com/index.md)