<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: frank javier mercado perez</title>
    <description>The latest articles on DEV Community by frank javier mercado perez (@frank_javiermercadopere).</description>
    <link>https://dev.to/frank_javiermercadopere</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4076710%2F111fda56-6a1b-4adc-b6ba-e1c140e90c9f.jpg</url>
      <title>DEV Community: frank javier mercado perez</title>
      <link>https://dev.to/frank_javiermercadopere</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/frank_javiermercadopere"/>
    <language>en</language>
    <item>
      <title>Connect a Carrd Landing Page to Payhip Without Building a Backend</title>
      <dc:creator>frank javier mercado perez</dc:creator>
      <pubDate>Thu, 20 Aug 2026 15:21:16 +0000</pubDate>
      <link>https://dev.to/frank_javiermercadopere/connect-a-carrd-landing-page-to-payhip-without-building-a-backend-ca5</link>
      <guid>https://dev.to/frank_javiermercadopere/connect-a-carrd-landing-page-to-payhip-without-building-a-backend-ca5</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Affiliate disclosure:&lt;/strong&gt; I’m an independent Payhip Partner. The optional signup link at the end is my partner link; I may receive a commission from Payhip if a referred seller generates eligible revenue. I am not a Payhip employee or official representative.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A creator selling one template or downloadable guide does not need to write a payment backend.&lt;/p&gt;

&lt;p&gt;The safer architecture is usually:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Carrd or static page
        ↓
Payhip product page or direct checkout
        ↓
Hosted payment and product delivery
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Your public page explains the offer. The hosted commerce platform owns the payment flow. No card data, secret keys, or payment logic belongs in Carrd.&lt;/p&gt;

&lt;p&gt;This tutorial shows two link-based integrations and one optional embed route.&lt;/p&gt;

&lt;h2&gt;
  
  
  Before you start
&lt;/h2&gt;

&lt;p&gt;You need:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A published product in Payhip&lt;/li&gt;
&lt;li&gt;Its public product URL&lt;/li&gt;
&lt;li&gt;A button on your Carrd or static page&lt;/li&gt;
&lt;li&gt;A clear product description, support contact, and terms&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In Payhip, the product URL is available from the product’s &lt;strong&gt;Share / Embed&lt;/strong&gt; controls. A typical product URL has this shape:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;https://payhip.com/b/PRODUCT_KEY
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Use your real product key in every example below.&lt;/p&gt;

&lt;h2&gt;
  
  
  Option 1: Send visitors to the product page
&lt;/h2&gt;

&lt;p&gt;This is the safest default when the buyer still needs details before purchasing.&lt;/p&gt;

&lt;p&gt;In Carrd:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Select the call-to-action button.&lt;/li&gt;
&lt;li&gt;Set its URL to your full Payhip product URL.&lt;/li&gt;
&lt;li&gt;Use a descriptive label such as &lt;strong&gt;View template details&lt;/strong&gt; or &lt;strong&gt;See what’s included&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Preview the page on desktop and mobile.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;On a conventional static site, the equivalent HTML is just an anchor:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;a&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"product-button"&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"https://payhip.com/b/PRODUCT_KEY"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  View product details
&lt;span class="nt"&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No JavaScript is required.&lt;/p&gt;

&lt;p&gt;Use this route when the Payhip product page contains important previews, license terms, compatibility notes, or variations that do not fit on your landing page.&lt;/p&gt;

&lt;h2&gt;
  
  
  Option 2: Link directly to checkout
&lt;/h2&gt;

&lt;p&gt;If your landing page already gives the buyer everything needed to decide, a direct checkout removes an intermediate page.&lt;/p&gt;

&lt;p&gt;Payhip documents this URL format:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;https://payhip.com/buy?link=PRODUCT_KEY
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The static HTML remains simple:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;a&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"buy-button"&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"https://payhip.com/buy?link=PRODUCT_KEY"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  Buy the template
&lt;span class="nt"&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In Carrd, paste the same direct-checkout URL into the button’s URL field.&lt;/p&gt;

&lt;p&gt;Do not use a vague label such as &lt;strong&gt;Continue&lt;/strong&gt;. A label like &lt;strong&gt;Buy the template — US$19&lt;/strong&gt; makes the action and price understandable before the click. Keep the displayed price synchronized with Payhip.&lt;/p&gt;

&lt;p&gt;Use direct checkout when:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The product, price, file format, and license are already clear&lt;/li&gt;
&lt;li&gt;The visitor does not need another sales page&lt;/li&gt;
&lt;li&gt;You have tested that the link opens the intended product and currency&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Avoid it when the buyer would be surprised by required details after clicking.&lt;/p&gt;

&lt;h2&gt;
  
  
  Optional: style a normal link like a button
&lt;/h2&gt;

&lt;p&gt;For a regular HTML site, you can style the anchor without adding checkout logic:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.buy-button&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;display&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;inline-flex&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;align-items&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;center&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;justify-content&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;center&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;min-height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;44px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;padding&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0.8rem&lt;/span&gt; &lt;span class="m"&gt;1.1rem&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;border-radius&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0.65rem&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#ffffff&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;background&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#2447e8&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;font-weight&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;700&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;text-decoration&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;none&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nc"&gt;.buy-button&lt;/span&gt;&lt;span class="nd"&gt;:hover&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;background&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#1833b8&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nc"&gt;.buy-button&lt;/span&gt;&lt;span class="nd"&gt;:focus-visible&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;outline&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;3px&lt;/span&gt; &lt;span class="nb"&gt;solid&lt;/span&gt; &lt;span class="m"&gt;#ffbf47&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;outline-offset&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;3px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;focus-visible&lt;/code&gt; state is not decoration. It helps keyboard users identify which control will activate.&lt;/p&gt;

&lt;h2&gt;
  
  
  Optional: use Payhip’s embed button
&lt;/h2&gt;

&lt;p&gt;Payhip also provides an embed button from &lt;strong&gt;Share / Embed → Embed Button&lt;/strong&gt;. It produces one snippet for the document’s &lt;code&gt;&amp;lt;head&amp;gt;&lt;/code&gt; and another for the desired button location.&lt;/p&gt;

&lt;p&gt;According to Payhip’s current documentation, that embedded-button option is available for digital and physical products, but not for tiered-priced courses, memberships, coaching products, or bundles. Check the documentation before choosing it because supported product types can change.&lt;/p&gt;

&lt;p&gt;For Carrd, the link-based methods above are easier to maintain and do not expose any secrets. If you use custom embed code, confirm that your Carrd plan supports the required code placement.&lt;/p&gt;

&lt;h2&gt;
  
  
  What must never go in the page
&lt;/h2&gt;

&lt;p&gt;Do not paste any of these into Carrd or client-side HTML:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Payment processor secret keys&lt;/li&gt;
&lt;li&gt;Payhip account passwords&lt;/li&gt;
&lt;li&gt;Private API credentials&lt;/li&gt;
&lt;li&gt;Buyer data&lt;/li&gt;
&lt;li&gt;Code that tries to capture card details before redirecting&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A public page’s source is visible to visitors. Treat every value in it as public.&lt;/p&gt;

&lt;h2&gt;
  
  
  Make the handoff feel intentional
&lt;/h2&gt;

&lt;p&gt;A redirect to another domain can feel suspicious when it is unexplained. Add one sentence close to the button:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Secure checkout and digital delivery are handled by Payhip.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Do not imply that your page is Payhip or that Payhip officially endorses you. The sentence only explains where the click goes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Launch QA checklist
&lt;/h2&gt;

&lt;p&gt;Run these checks after publishing, not only inside the editor:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Open the public Carrd URL in a private browser window.&lt;/li&gt;
&lt;li&gt;Test every purchase button on both desktop and a narrow mobile viewport.&lt;/li&gt;
&lt;li&gt;Confirm the product name, displayed price, currency, and files match.&lt;/li&gt;
&lt;li&gt;Make sure the checkout belongs to the intended Payhip product.&lt;/li&gt;
&lt;li&gt;Verify keyboard focus is visible and the button label describes the action.&lt;/li&gt;
&lt;li&gt;Confirm support, license, and refund information are reachable before purchase.&lt;/li&gt;
&lt;li&gt;Check that demo images, fonts, and files are licensed for distribution.&lt;/li&gt;
&lt;li&gt;Repeat the link test after changing a product slug or URL.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You do not need to complete an unintended live purchase to confirm the destination. Stop before payment unless you have a deliberate, documented test procedure.&lt;/p&gt;

&lt;h2&gt;
  
  
  Product page or direct checkout?
&lt;/h2&gt;

&lt;p&gt;Use this decision rule:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Does the landing page answer every purchase-critical question?
  ├─ No  → Link to the Payhip product page
  └─ Yes → Consider the direct checkout link
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Starting with the product page is rarely a serious mistake. Starting with checkout before the offer is clear often is.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final result
&lt;/h2&gt;

&lt;p&gt;The integration can be one ordinary URL. Carrd handles presentation; Payhip handles the hosted commerce flow. That boundary makes the system simpler to build, safer to maintain, and easier to test.&lt;/p&gt;

&lt;p&gt;Official reference: &lt;a href="https://help.payhip.com/article/68-add-payhip-to-your-website" rel="noopener noreferrer"&gt;Add Payhip to Your Website&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;If you have independently decided that Payhip fits your product, this is my disclosed &lt;a href="https://payhip.com?fp_ref=frank-javier73" rel="noopener noreferrer"&gt;Payhip partner signup link&lt;/a&gt;. Payhip may pay me a commission from eligible referred sellers. You can use the official documentation above without using my partner link.&lt;/p&gt;

</description>
      <category>nocode</category>
      <category>webdev</category>
      <category>tutorial</category>
      <category>ecommerce</category>
    </item>
  </channel>
</rss>
