> ## Documentation Index
> Fetch the complete documentation index at: https://docs.loqate.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Verify Shopify Customer Data in Seconds

> Native Shopify Plus integration with Address Capture, Address Verify, and Email Validation. Improve checkout data quality.

<style>
  {`
    .shopify-overview-page {
      margin-top: -2rem;
    }
    .shopify-carousel-nav-btn {
      position: absolute;
      top: 50%;
      transform: translateY(-50%);
      background: rgba(255, 255, 255, 0.95);
      border: 1px solid rgba(0, 0, 0, 0.1);
      width: 48px;
      height: 48px;
      border-radius: 50%;
      display: flex;
      align-items: center;
      justify-content: center;
      cursor: pointer;
      font-size: 24px;
      color: #333;
      z-index: 10;
      box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
      transition: all 0.2s;
    }
    .shopify-carousel-nav-btn:hover {
      background: white;
      box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2);
    }
    .shopify-carousel-nav-btn.prev {
      left: 1rem;
    }
    .shopify-carousel-nav-btn.next {
      right: 1rem;
    }
    .hero-services-list {
      list-style-type: disc !important;
      list-style-position: inside !important;
    }
    .hero-services-list li {
      display: list-item !important;
      list-style-type: disc !important;
      text-indent: -1.5rem !important;
      padding-left: 1.5rem !important;
    }
    .hero-services-list li::before {
      display: none !important;
      content: none !important;
    }
    .hero-services-list li::marker {
      color: #000 !important;
    }
    .hero-cta-button {
      background-color: #000 !important;
      color: #fff !important;
    }
    .hero-cta-button:hover {
      background-color: #333 !important;
    }

    @media (prefers-color-scheme: dark) {
      .hero-cta-button {
        background-color: #fff !important;
        color: #000 !important;
      }
      .hero-cta-button:hover {
        background-color: #e0e0e0 !important;
      }
    }

    html.dark .hero-cta-button {
      background-color: #fff !important;
      color: #000 !important;
    }
    html.dark .hero-cta-button:hover {
      background-color: #e0e0e0 !important;
    }

    html.light .hero-cta-button {
      background-color: #000 !important;
      color: #fff !important;
    }
    html.light .hero-cta-button:hover {
      background-color: #333 !important;
    }
    `}
</style>

<div className="shopify-overview-page" />

<div style={{display: 'grid', gridTemplateColumns: '320px 1fr', gap: '3rem', marginBottom: '4rem', alignItems: 'start'}}>
  <div>
    <h3 style={{fontSize: '1rem', fontWeight: '700', margin: '0 0 0.5rem 0'}}>Works with:</h3>
    <p style={{margin: '0 0 2rem 0', fontSize: '0.95rem'}}>Shopify Plus Checkout</p>

    <h3 style={{fontSize: '1rem', fontWeight: '700', margin: '0 0 0.5rem 0'}}>Supported Loqate Services:</h3>

    <ul className="hero-services-list" style={{paddingLeft: 0, marginLeft: 0, margin: '0 0 4rem 0'}}>
      <li style={{marginBottom: '0.25rem', fontSize: '0.95rem'}}>Address Capture</li>
      <li style={{marginBottom: '0.25rem', fontSize: '0.95rem'}}>Address Verify</li>
      <li style={{marginBottom: '0.25rem', fontSize: '0.95rem'}}>Email Verification</li>
    </ul>

    <a
      href="#integrate-in-3-steps"
      id="hero-cta-btn"
      style={{
  display: 'inline-block',
  padding: '0.75rem 1.5rem',
  backgroundColor: '#000',
  color: '#fff',
  textDecoration: 'none',
  borderRadius: '0.5rem',
  fontWeight: '600',
  fontSize: '0.95rem',
  textAlign: 'center',
  border: 'none',
  cursor: 'pointer'
}}
    >
      Integrate in 3 steps
    </a>

    <script
      dangerouslySetInnerHTML={{__html: `
  (function() {
    function updateHeroBtn() {
      var btn = document.getElementById('hero-cta-btn');
      if (!btn) return;
      
      var htmlEl = document.documentElement;
      var bodyEl = document.body;
      
      // Check multiple ways
      var isLight = htmlEl.classList.contains('light') ||
                    (bodyEl && bodyEl.classList.contains('light')) ||
                    htmlEl.getAttribute('data-theme') === 'light' ||
                    (htmlEl.className && htmlEl.className.indexOf('light') > -1) ||
                    (!htmlEl.classList.contains('dark') && !htmlEl.className.includes('dark'));
      
      if (isLight) {
        btn.style.backgroundColor = '#000';
        btn.style.color = '#fff';
      } else {
        btn.style.backgroundColor = '#fff';
        btn.style.color = '#000';
      }
    }
    
    // Run multiple times to catch theme initialization
    updateHeroBtn();
    setTimeout(updateHeroBtn, 100);
    setTimeout(updateHeroBtn, 300);
    setTimeout(updateHeroBtn, 600);
    setTimeout(updateHeroBtn, 1000);
    
    // Watch for theme changes
    if (window.MutationObserver) {
      var observer = new MutationObserver(function() {
        setTimeout(updateHeroBtn, 10);
      });
      observer.observe(document.documentElement, { 
        attributes: true, 
        attributeFilter: ['class', 'data-theme', 'style'] 
      });
      if (document.body) {
        observer.observe(document.body, { 
          attributes: true, 
          attributeFilter: ['class', 'data-theme'] 
        });
      }
    }
  })();
`}}
    />
  </div>

  <div style={{position: 'relative', overflow: 'hidden', height: '500px', margin: 0, padding: '10px 15px', lineHeight: 0}}>
    <div id="shopify-carousel-track" data-index="0" style={{display: 'flex', gap: '2rem', transition: 'transform 0.5s ease', transform: 'translateX(0px)', height: '480px', alignItems: 'flex-start', lineHeight: 0, margin: 0, padding: 0}}>
      <div style={{flex: '0 0 380px', height: '480px', borderRadius: '20px', overflow: 'hidden', boxShadow: '0 4px 12px rgba(0,0,0,0.1)', display: 'block', margin: 0, padding: 0}}>
        <img src="https://mintcdn.com/loqate/sKY9PIVDXiacbW-t/images/integrations/shopify-plus/shopify-address-capture-checkout.png?fit=max&auto=format&n=sKY9PIVDXiacbW-t&q=85&s=a0d94602adaee90ec685c3a414e2475c" alt="Address Capture" style={{width: '100%', height: '100%', objectFit: 'cover', display: 'block', margin: 0, verticalAlign: 'top'}} width="1315" height="650" data-path="images/integrations/shopify-plus/shopify-address-capture-checkout.png" />
      </div>

      <div style={{flex: '0 0 380px', height: '480px', borderRadius: '20px', overflow: 'hidden', boxShadow: '0 4px 12px rgba(0,0,0,0.1)', display: 'block', margin: 0, padding: 0}}>
        <img src="https://mintcdn.com/loqate/sKY9PIVDXiacbW-t/images/integrations/shopify-plus/shopify-verify-thankyou-1.PNG?fit=max&auto=format&n=sKY9PIVDXiacbW-t&q=85&s=3de23008318307b4f315505e6fa0ca66" alt="Address Verify" style={{width: '100%', height: '100%', objectFit: 'cover', display: 'block', margin: 0, verticalAlign: 'top'}} width="634" height="820" data-path="images/integrations/shopify-plus/shopify-verify-thankyou-1.PNG" />
      </div>

      <div style={{flex: '0 0 380px', height: '480px', borderRadius: '20px', overflow: 'hidden', boxShadow: '0 4px 12px rgba(0,0,0,0.1)', display: 'block', margin: 0, padding: 0}}>
        <img src="https://mintcdn.com/loqate/sKY9PIVDXiacbW-t/images/integrations/shopify-plus/shopify-post-checkout-verify-1.PNG?fit=max&auto=format&n=sKY9PIVDXiacbW-t&q=85&s=23efc21483cc4300c72e63aa5b14bfd5" alt="Post-Checkout Verification" style={{width: '100%', height: '100%', objectFit: 'cover', display: 'block', margin: 0, verticalAlign: 'top'}} width="621" height="733" data-path="images/integrations/shopify-plus/shopify-post-checkout-verify-1.PNG" />
      </div>
    </div>

    <div className="carousel-fade-right" style={{position: 'absolute', top: 0, right: 0, width: '200px', height: '100%', pointerEvents: 'none', zIndex: 15}} />

    <a href="#" id="carousel-prev-btn" onClick={(e) => { 
          e.preventDefault();
          var track = document.getElementById('shopify-carousel-track');
          var currentIndex = parseInt(track.getAttribute('data-index') || '0');
          if (currentIndex > 0) {
            currentIndex--;
            track.setAttribute('data-index', currentIndex);
            track.style.transform = 'translateX(' + (currentIndex * -412) + 'px)';
            document.getElementById('carousel-prev-btn').style.opacity = currentIndex === 0 ? '0.3' : '1';
            document.getElementById('carousel-prev-btn').style.pointerEvents = currentIndex === 0 ? 'none' : 'auto';
            document.getElementById('carousel-next-btn').style.opacity = '1';
            document.getElementById('carousel-next-btn').style.pointerEvents = 'auto';
          }
        }} className="shopify-carousel-nav-btn prev" style={{position: 'absolute', top: 'calc(50% + 10px)', transform: 'translateY(-50%)', left: 'calc(1rem + 15px)', background: 'rgba(255, 255, 255, 0.95)', border: '1px solid rgba(0, 0, 0, 0.1)', width: '48px', height: '48px', borderRadius: '50%', cursor: 'pointer', fontSize: '24px', color: '#333', zIndex: 10, boxShadow: '0 2px 8px rgba(0, 0, 0, 0.15)', display: 'flex', alignItems: 'center', justifyContent: 'center', textDecoration: 'none', opacity: 0.3, pointerEvents: 'none', transition: 'opacity 0.3s ease'}}>‹</a>
    <a href="#" id="carousel-next-btn" onClick={(e) => { 
          e.preventDefault();
          var track = document.getElementById('shopify-carousel-track');
          var currentIndex = parseInt(track.getAttribute('data-index') || '0');
          if (currentIndex < 2) {
            currentIndex++;
            track.setAttribute('data-index', currentIndex);
            track.style.transform = 'translateX(' + (currentIndex * -412) + 'px)';
            document.getElementById('carousel-next-btn').style.opacity = currentIndex === 2 ? '0.3' : '1';
            document.getElementById('carousel-next-btn').style.pointerEvents = currentIndex === 2 ? 'none' : 'auto';
            document.getElementById('carousel-prev-btn').style.opacity = '1';
            document.getElementById('carousel-prev-btn').style.pointerEvents = 'auto';
          }
        }} className="shopify-carousel-nav-btn next" style={{position: 'absolute', top: 'calc(50% + 10px)', transform: 'translateY(-50%)', right: 'calc(1rem + 15px)', background: 'rgba(255, 255, 255, 0.95)', border: '1px solid rgba(0, 0, 0, 0.1)', width: '48px', height: '48px', borderRadius: '50%', cursor: 'pointer', fontSize: '24px', color: '#333', zIndex: 10, boxShadow: '0 2px 8px rgba(0, 0, 0, 0.15)', display: 'flex', alignItems: 'center', justifyContent: 'center', textDecoration: 'none', transition: 'opacity 0.3s ease'}}>›</a>
  </div>
</div>

<style>
  {`
    /* Default light mode - Mintlify light background is typically #fafafa or #ffffff */
    .carousel-fade-right {
      background: linear-gradient(to right, 
        rgba(250, 250, 250, 0) 0%, 
        rgba(250, 250, 250, 0.5) 40%,
        rgba(250, 250, 250, 0.85) 70%,
        rgba(250, 250, 250, 1) 100%
      );
      backdrop-filter: blur(12px);
      -webkit-backdrop-filter: blur(12px);
    }

    /* Dark mode - Mintlify dark background is typically #0f1117 or #09090b */
    @media (prefers-color-scheme: dark) {
      .carousel-fade-right {
        background: linear-gradient(to right, 
          rgba(15, 17, 23, 0) 0%, 
          rgba(15, 17, 23, 0.5) 40%,
          rgba(15, 17, 23, 0.85) 70%,
          rgba(15, 17, 23, 1) 100%
        );
        backdrop-filter: blur(12px);
        -webkit-backdrop-filter: blur(12px);
      }
    }

    html.dark .carousel-fade-right {
      background: linear-gradient(to right, 
        rgba(15, 17, 23, 0) 0%, 
        rgba(15, 17, 23, 0.5) 40%,
        rgba(15, 17, 23, 0.85) 70%,
        rgba(15, 17, 23, 1) 100%
      ) !important;
      backdrop-filter: blur(12px);
      -webkit-backdrop-filter: blur(12px);
    }

    html.light .carousel-fade-right {
      background: linear-gradient(to right, 
        rgba(250, 250, 250, 0) 0%, 
        rgba(250, 250, 250, 0.5) 40%,
        rgba(250, 250, 250, 0.85) 70%,
        rgba(250, 250, 250, 1) 100%
      ) !important;
      backdrop-filter: blur(12px);
      -webkit-backdrop-filter: blur(12px);
    }

    .shopify-carousel-nav-btn:hover {
      background: white !important;
      box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2) !important;
    }
    `}
</style>

<script>
  {`
    (function() {
    // Carousel setup
    var track = document.getElementById('shopify-carousel-track');
    if (track) {
      var children = Array.from(track.children);
      children.forEach(function(child) {
        track.appendChild(child.cloneNode(true));
        track.appendChild(child.cloneNode(true));
      });
      window.carouselIndex = 3;
      track.style.transform = 'translateX(-1200px)';
    }

    // Dynamic fade color matching
    function updateCarouselFade() {
      var fadeElement = document.querySelector('.carousel-fade-right');
      if (!fadeElement) return;
      
      // Get the actual background color from the page body or main content area
      var bgColor = window.getComputedStyle(document.body).backgroundColor;
      
      // If body is transparent, try main or article
      if (bgColor === 'rgba(0, 0, 0, 0)' || bgColor === 'transparent') {
        var main = document.querySelector('main') || document.querySelector('article');
        if (main) {
          bgColor = window.getComputedStyle(main).backgroundColor;
        }
      }
      
      // Convert rgb(a) to rgba with different opacities for gradient
      if (bgColor && bgColor.startsWith('rgb')) {
        var matches = bgColor.match(/\d+/g);
        if (matches && matches.length >= 3) {
          var r = matches[0];
          var g = matches[1];
          var b = matches[2];
          
          var gradient = 'linear-gradient(to right, ' +
            'rgba(' + r + ', ' + g + ', ' + b + ', 0) 0%, ' +
            'rgba(' + r + ', ' + g + ', ' + b + ', 0.5) 40%, ' +
            'rgba(' + r + ', ' + g + ', ' + b + ', 0.85) 70%, ' +
            'rgba(' + r + ', ' + g + ', ' + b + ', 1) 100%)';
          
          fadeElement.style.background = gradient;
        }
      }
    }

    // Run on load
    updateCarouselFade();

    // Update on theme change
    if (window.MutationObserver) {
      var observer = new MutationObserver(function(mutations) {
        mutations.forEach(function(mutation) {
          if (mutation.attributeName === 'class') {
            setTimeout(updateCarouselFade, 100);
          }
        });
      });
      
      observer.observe(document.documentElement, { attributes: true });
    }

    // Also update after a short delay to ensure styles are loaded
    setTimeout(updateCarouselFade, 500);
    })();

    // Theme-aware button color
    (function() {
    function updateButtonColor() {
      var button = document.querySelector('.hero-cta-button');
      if (!button) return;
      
      var isDark = document.documentElement.classList.contains('dark') || 
                   window.matchMedia('(prefers-color-scheme: dark)').matches;
      
      if (isDark) {
        button.style.backgroundColor = '#fff';
        button.style.color = '#000';
      } else {
        button.style.backgroundColor = '#000';
        button.style.color = '#fff';
      }
    }

    // Update on load
    setTimeout(updateButtonColor, 100);
    setTimeout(updateButtonColor, 500);

    // Watch for theme changes
    if (window.MutationObserver) {
      var observer = new MutationObserver(updateButtonColor);
      observer.observe(document.documentElement, { attributes: true, attributeFilter: ['class'] });
    }

    // Watch for system theme changes
    if (window.matchMedia) {
      window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', updateButtonColor);
    }
    })();
    `}
</script>

<div className="section-divider" />

## About this app

Add enterprise-grade address validation to your Shopify checkout with type-ahead address lookup, post-checkout verification, and email validation. Built on Shopify's Checkout Extensibility framework, the Loqate integration reduces delivery failures and improves data quality without requiring technical knowledge.

## Completely Modular Validation Suite

<div style={{marginBottom: '-1rem'}} />

<Tabs>
  <Tab title="Address Capture">
    ### Type-Ahead Address Lookup

    Active by default once configured, Address Capture adds intelligent type-ahead functionality to both delivery and billing address fields. Customers start typing their address and select from a list of verified suggestions, dramatically reducing input time and errors.

    **Key Features:**

    * Works in both delivery and billing address sections
    * Respects your Shopify shipping country settings
    * Reduces checkout time by up to 60%
    * Supports 245+ countries and territories

    <Note>
      The countries in your **Country/Region** dropdown are controlled by your Shopify store's shipping settings. Only countries you ship to will appear in the list.
    </Note>

    [Learn more about Address Capture](/our-services/address-capture/overview)
  </Tab>

  <Tab title="Address Verify">
    ### Post-Checkout Address Verification

    Address Verify adds an intelligent verification layer on the Thank You page, checking delivery addresses through correction, standardization, and enhancement processes. If improvements are found, customers can approve or decline the suggested changes.

    **Key Features:**

    * Runs post-checkout on the Thank You page
    * Compatible with wallets (Apple Pay, Google Pay)
    * Works with logged-in customer addresses
    * Updates delivery address in your Shopify orders automatically
    * Three possible outcomes: verified, alternative found, or not validated

    [Learn more about Address Verify](/our-services/address-verify/overview)
  </Tab>

  <Tab title="Email Validation">
    ### Real-Time Email Address Verification

    Email Validation ensures customers enter valid email addresses before completing checkout. Invalid addresses trigger an inline notification, preventing customers from proceeding until a valid email is provided. Valid entries pass through seamlessly without interruption.

    **Key Features:**

    * Real-time validation as customers type
    * Inline error messaging for invalid addresses
    * No visual impact for valid addresses
    * Reduces bounce rates and improves deliverability
    * Catches common typos and formatting errors

    Invalid email addresses may include non-existent domains, syntax errors, disposable addresses, or known invalid patterns. See the [Email Validation API documentation](/api-reference/email-validation/individual) to learn more about the service.
  </Tab>
</Tabs>

<br />

<Card title="About the Shopify Plus Integration" href="/integrations/about-the-loqate-shopify-plus-integration">
  See how the Loqate Shopify Plus Integration looks in practice
</Card>

<Card title="Integration guide" href="/integrations/shopify-plus-overview">
  Check out the Loqate Shopify Plus Integration Guide
</Card>

<div className="section-divider" />

## Integrate in 3 steps

<p>1) Get your API key 2) Install Shopify App 3) Configure Services</p>

<Card>
  <div style={{display: 'flex', alignItems: 'center', justifyContent: 'space-between', gap: '3rem', flexWrap: 'wrap', padding: '1rem 0.5rem'}}>
    <div style={{flex: '1', minWidth: '280px'}}>
      <div style={{marginTop: 0, marginBottom: '0.75rem', fontSize: '1.875rem', lineHeight: '1.2', fontWeight: '700'}}>
        Get API Key and then Install Shopify App
      </div>

      <p style={{marginBottom: 0, fontSize: '1rem', lineHeight: '1.6', opacity: '0.85'}}>
        Install the Loqate Shopify app and start validating addresses in minutes.
      </p>
    </div>

    <div style={{display: 'flex', flexDirection: 'column', gap: '1rem', minWidth: '220px', alignItems: 'stretch'}}>
      <a href="https://account.loqate.com/" class="btn-primary" style={{textAlign: 'center', whiteSpace: 'nowrap'}}>
        1. Get Your API Key
      </a>

      <a href="https://apps.shopify.com/loqate" class="btn-secondary" style={{textAlign: 'center', whiteSpace: 'nowrap'}}>
        2. Install Shopify App
      </a>

      <a href="https://docs.loqate.com/integrations/shopify-plus-overview#enabling-loqate-services" class="btn-secondary" style={{textAlign: 'center', whiteSpace: 'nowrap'}}>
        3. Configure Services
      </a>
    </div>
  </div>
</Card>

<div className="section-divider" />

## Additional Resources

<div style={{display: 'flex', flexDirection: 'column', gap: '1rem'}}>
  <div style={{display: 'flex', alignItems: 'center', gap: '0.75rem'}}>
    [Video Tutorial](/integrations/shopify-plus-overview#setup-video)
  </div>
</div>

<div className="section-divider" />

## Pricing

<Card title="View Pricing Plans" icon="credit-card" href="https://www.loqate.com/pricing">
  Flexible plans starting with a 45-day free trial. Choose the plan that fits your business needs.
</Card>

<div className="section-divider" />

## Frequently Asked Questions

<br />

<div className="faq-small-text">
  <AccordionGroup>
    <Accordion title="How quickly can I install and set up the Loqate app in my Shopify store?">
      <span style={{fontSize: '0.875rem', display: 'block'}}>
        Installation takes less than 5 minutes through the Shopify App Store. You don't need any technical knowledge—just install the app, add your API key, and configure which services to enable. Address Capture activates automatically on both delivery and billing address fields.
      </span>
    </Accordion>

    <Accordion title="Can I use each validation service independently?">
      <span style={{fontSize: '0.875rem', display: 'block'}}>
        Yes, all three services (Address Capture, Address Verify, and Email Validation) can be enabled or disabled independently. Address Capture is enabled by default, but you have complete control over which services to use based on your business needs.
      </span>
    </Accordion>

    <Accordion title="Will Address Verify work with Apple Pay, Google Pay, and logged-in customers?">
      <span style={{fontSize: '0.875rem', display: 'block'}}>
        Yes. Address Verify runs post-checkout on the Thank You page, making it fully compatible with wallet payments (Apple Pay, Google Pay) and addresses from logged-in customer accounts. This is why we recommend the post-checkout approach rather than checkout page verification.
      </span>
    </Accordion>

    <Accordion title="Does it work with international customers and all Shopify markets?">
      <span style={{fontSize: '0.875rem', display: 'block'}}>
        Yes, we support 245+ countries and territories worldwide. The app automatically respects your Shopify store's shipping country settings, so only the countries you ship to will appear in the country dropdown. Address suggestions and validation adapt to each country's specific address format. [Custom field mappings](/integrations/shopify-custom-field-mappings) can be used to overwrite the defaults.
      </span>
    </Accordion>

    <Accordion title="What happens if Address Verify can't validate an address?">
      <span style={{fontSize: '0.875rem', display: 'block'}}>
        If an address is too low quality to validate, customers see a notification that "Your shipping address could not be validated," but their order still processes normally. This ensures you never lose a sale due to validation issues while still improving overall address quality.
      </span>
    </Accordion>

    <Accordion title="Will this slow down my checkout process?">
      <span style={{fontSize: '0.875rem', display: 'block'}}>
        No. Our validation APIs are optimized for speed with sub-100ms response times. Address Capture actually speeds up checkout by reducing typing, and Address Verify runs post-checkout so it never interrupts the purchase flow. The app typically improves completion rates by reducing form errors.
      </span>
    </Accordion>
  </AccordionGroup>
</div>

<p>
  Still have questions or need support? <a href="mailto:LoqateSupport@gbgplc.com">Send us an email</a>
</p>

<div className="section-divider" />

## Shopify App Details

<div style={{marginTop: '2rem'}}>
  <div style={{display: 'grid', gridTemplateColumns: 'repeat(4, 1fr)', gap: '2rem'}}>
    <div>
      <h3 style={{fontSize: '0.875rem', fontWeight: '700', marginBottom: '0.5rem', opacity: '0.7'}}>Resources</h3>
      <a href="https://www.loqate.com/en-us/legal/privacy-policy/" style={{textDecoration: 'none'}}>Privacy policy</a>
    </div>

    <div>
      <h3 style={{fontSize: '0.875rem', fontWeight: '700', marginBottom: '0.5rem', opacity: '0.7'}}>Developer</h3>
      <p style={{marginBottom: '0.25rem', fontWeight: '600'}}>GB GROUP PLC</p>
      <a href="https://www.loqate.com/" style={{textDecoration: 'none', display: 'block', marginBottom: '0.25rem'}}>Website</a>
      <p style={{fontSize: '0.875rem', opacity: '0.8', margin: 0}}>128 Queen Victoria Street, London, ENG, EC4V 4BJ, GB</p>
    </div>

    <div>
      <h3 style={{fontSize: '0.875rem', fontWeight: '700', marginBottom: '0.5rem', opacity: '0.7'}}>Launched</h3>
      <p style={{margin: 0}}>April 2, 2024</p>
    </div>

    <div>
      <h3 style={{fontSize: '0.875rem', fontWeight: '700', marginBottom: '0.5rem', opacity: '0.7'}}>Data access</h3>

      <p style={{fontSize: '0.875rem', marginBottom: '1rem'}}>
        This app needs access to the following data to work on your store. Learn why in the developer's <a href="https://www.loqate.com/en-us/legal/privacy-policy/" style={{textDecoration: 'none'}}>privacy policy</a>.
      </p>

      <p style={{fontSize: '0.875rem', fontWeight: '600', marginBottom: '0.25rem'}}>View personal data:</p>
      <p style={{fontSize: '0.875rem', marginBottom: '1rem', opacity: '0.8'}}>Customers, store owner</p>

      <p style={{fontSize: '0.875rem', fontWeight: '600', marginBottom: '0.25rem'}}>View and edit store data:</p>
      <p style={{fontSize: '0.875rem', marginBottom: '1rem', opacity: '0.8'}}>Orders, Online Store</p>

      <a href="https://help.shopify.com/en/manual/apps/app-permissions" style={{fontSize: '0.875rem', textDecoration: 'none'}}>See details</a>
    </div>
  </div>
</div>
