📖 Help & Documentation

Everything you need to set up, operate, and optimize your Flowtifyy shop.

🚀 Quickstart

Get your first Flowtifyy shop live in under 10 minutes. Follow these steps:

Create an account: Visit flowtifyy.com/register and sign up with your email address. Confirm the verification email.

Create a shop: After login, go to "My Shops". Click Create new shop, choose a name and shop URL (e.g. myshop).

Add your first product: In the admin area → Products → New product. Enter title, price, image and description, then save.

Embed on your website: Enter the allowed host under Settings → Integration and use the embed code on a website whose plan permits external iframes or scripts.

💡

The shop URL is permanent and forms the path to your shop. Choose it carefully — it cannot be changed later.

⚙️ Shop Setup

Under Settings in the admin area, you can fully customise your shop:

General

  • Shop name: Appears in the shop header and in emails.
  • Language / Currency: CHF and EUR are currently supported.
  • Logo: Upload as PNG/SVG, displayed in the shop header.
  • Colours & Fonts: Primary colour, text colour, background, font source (Google Fonts or Webflow inheritance).

Allowed website domain Free+

  • Enter your desired domain (e.g. shop.yourcompany.com).
  • Enter the exact host of your existing website. This does not create a domain or SSL certificate.

Email Settings

  • Customise the sender name and subject of order confirmation emails.
  • Legal details in the email footer (required by law in Switzerland).
  • Optional copy of every order confirmation to your own email.
ℹ️

Order confirmation emails are always sent from noreply@flowtifyy.com. The Reply-To address is set to your shop email.

📦 Products

Creating a product

Go to Products → New product. Fill in the following fields:

FieldDescription
NameRequired. Appears in the shop and in order confirmations.
PriceGross price including VAT (if enabled).
DescriptionFormatted text, Markdown supported.
Main imageDisplayed in the cart widget and product card. JPEG/PNG/WebP/AVIF, max 10 MB. When AVIF is enabled, images are automatically optimised on upload.
Additional imagesImage gallery in the product detail view.
StockOptional. At 0, the product is shown as "Sold out".
StatusActive / Draft / Inactive. Only active products appear in the shop.
TranslationsName and description can be maintained in DE / FR / IT / EN.
⚠️

When downgrading to the Free plan, products above the limit (5 products) are automatically deactivated — not deleted.

💾 Digital Products

In addition to physical goods, Flowtifyy supports digital products — for example e-books, templates, PDFs, audio files or software licences. The platform's core focus remains on traditional product sales; digital products are a practical extension for your catalogue.

ℹ️

When creating or editing a product, select Digital Product under Product type. All other fields (name, price, images, variants) work identically to physical products.

Delivery methods

Choose per product how the digital content is delivered after purchase:

MethodDescription
File UploadUpload one or more files directly into Flowtifyy (max. 100 MB per file). After the order, the buyer receives a secure, time-limited download link by email.
External LinkEnter an external URL (e.g. Google Drive, Dropbox or your own server). The link is revealed to the buyer only after successful payment.
Licence Key PoolUpload a list of licence keys. With each order, a unique key is automatically assigned and sent by email.

Access limits & expiry

  • Max. downloads: How many times the buyer may use the download link (0 = unlimited).
  • Validity period: How many days the link remains active (0 = no expiry).

File limits by plan

PlanFiles per product
Free / Starter / Basic1 file
Pro3 files
Unlimited20 files

Variants with digital content

Each variant of a digital product can have its own file upload or licence key pool — ideal for different editions of the same product (e.g. "Standard" vs. "Pro Version").

💡

Digital products have no stock level. Inventory management is not required; orders are processed automatically as soon as payment is received.

⚡ AVIF Image Optimisation

AVIF is a modern image format that compresses photos by up to 50 % less data than JPEG or WebP at the same visual quality. Smaller images load faster, improve your Core Web Vitals and increase conversion rates in the shop.

Activation

Go to Settings → Design.

Enable the «AVIF (Convert images)» toggle. Save settings.

From now on, every newly uploaded product photo is automatically converted to AVIF — no manual step required.

Converting existing images

Images uploaded before activation remain in their original format. To convert all existing product photos at once:

Click «Convert now» in Settings → Design.

Flowtifyy converts all product photos in the background and shows how many images were converted.

Images already in AVIF format, SVGs and GIFs are automatically skipped.

Browser compatibility

AVIF is supported by all modern browsers (Chrome, Firefox, Safari 16+, Edge). On older browsers the server delivers the original image as a fallback.

💡

Conversion runs server-side at 80 % quality — visually indistinguishable from lossless for product photos, but significantly smaller. SVG and GIF files are not converted and remain in their original format.

🗂️ Categories

Categories structure your shop and allow customers to filter products. Go to Categories → New category.

  • Each category gets a name (multilingual) and an optional image.
  • Products can be assigned to one or more categories.
  • Categories appear in the shop as tabs or filter tiles.
  • Order can be adjusted via drag-and-drop.

🛒 Orders

All orders appear under Orders in real time.

Order status

StatusMeaning
NewOrder received, not yet processed.
In progressManually set when the order is being prepared.
ShippedItem shipped or provided.
CompletedDelivery confirmed, order closed.
CancelledOrder has been cancelled.

Order detail

Click on an order to see all details: customer data, items, total, payment method, delivery address and timestamps. From here you can also change the status or resend an order confirmation.

Export

Orders can be exported as CSV (with filters by date and status).

💳 Payment Methods

Under Settings → Payment methods, activate and configure your desired methods.

MethodPlanNotes
PrepaymentFree+Customer transfers before shipping. Bank details appear in the order confirmation.
InvoiceFree+Payment after receipt. Optionally restricted to known customers.
TWINT Payment LinkFree+Static TWINT payment link. Customer manually enters the amount and pays.
TWINT Dynamic (Payrexx)Pro+Exact-amount QR per order via Payrexx. Automatic payment confirmation.
Credit card (Payrexx)Pro+Visa/MC via Payrexx.
Credit card (Stripe)Pro+Visa/MC via Stripe.
PayPalPro+Via Payrexx integration.

🟡 Setting up TWINT

TWINT Payment Link (Free+)

Create a free static payment link in the TWINT Business Portal → Payment Link.

Copy the generated payment link.

Enter the link under Settings → Payment Methods → TWINT → Payment Link.

⚠️

With a static payment link, the customer must enter the amount manually. Automatic confirmation is not possible — the status must be set to "Paid" manually.

ℹ️

TWINT is only available for orders with a Swiss delivery address.

🔗 Website embeds (optimized for Webflow)

Flowtifyy allows one approved live website host plus Webflow staging. Your website system and plan must allow external iframes or custom scripts. Sandboxes may impose further restrictions; compatibility with individual providers is not universally guaranteed.

Get the embed code

In the admin area: Settings → Integration → iFrame code.

Copy the displayed HTML code.

First enter the exact website host under Settings → Integration. Add the code to a website that allows external embeds – for example, a Webflow Embed element. Check your provider's plan rules.

Custom "Add to cart" buttons

You can use any element on your Webflow page as an "Add to cart" button:

<button data-fi-slug="SHOP-SLUG" data-fi-product="PRODUCT-SLUG">Add to cart</button>
<script src="https://app.flowtifyy.com/widget/embed.js?slug=SHOP-SLUG"></script>

Replace SHOP-SLUG with your shop URL and PRODUCT-SLUG with the product slug.

🔒 Domain Restriction

Under Settings → Integration you define which domains are allowed to embed your shop. This prevents your shop from being displayed on unauthorized websites.

FieldExamplePlan
Webflow Staging Domainhttps://your-shop.webflow.ioFree+
Website domain (live)www.your-website.comFree+ (one exact host)

Only configured hosts may embed the shop; without one, external embeds are blocked. On Free, the exact live host is allowed: www.your-website.com and your-website.com are different hosts. Direct access and admin preview remain available.

💡

Add your staging domain before publishing in Webflow. This protects the shop from the start and ensures it cannot appear on unintended pages.

🛍️ Cart Widget

The cart widget enables a seamless shopping experience directly on your Webflow page — without visitors having to leave the page.

Activate the widget

Under Settings → Cart Widget activate the widget and choose:

  • Position: Left or right
  • Visibility: Only on shop pages or across the entire website
  • Placement: Automatically inserted into the element with ID flowtifyy-cart-widget

Embed the widget code

<script src="https://app.flowtifyy.com/widget/cart.js?slug=SHOP-SLUG" async></script>

Widget features

  • Cart icon with real-time item badge
  • Slide-in drawer with item list, quantity adjustment and remove function
  • Product main photos in the cart view
  • Full checkout process within the drawer
  • Automatic clear after order completion

🔗 URL Sync

URL Sync keeps the browser URL of your Webflow page in sync with the current shop view inside the iframe — without any page reload.

What this means

  • When a visitor opens a product, the URL changes from /shop/ to /shop/?_fi_view=detail&_fi_slug=product-name.
  • When filtering a category, ?_fi_cat=42 is appended.
  • The browser's Back button correctly navigates back to the product list or previous category.
  • Product detail links are directly shareable — opening the link jumps straight to the correct view.

Enable

Under Settings → Integration → Enable URL Sync (checkbox) toggle on or off. Enabled by default.

URL parameters

ParameterValuesMeaning
_fi_viewlist · detailActive view (product list or product detail)
_fi_slugProduct slugOpen product (only when detail)
_fi_catCategory ID (number)Active category filter

How it works

  1. The shop iframe sends a flowtifyy-nav-push postMessage event whenever the visitor navigates.
  2. The widget script on the parent page writes the URL parameters using history.pushState — without a page reload.
  3. On page load the widget reads any existing URL parameters and sends flowtifyy-nav-init to the iframe.
  4. On browser back/forward the browser fires a popstate event — the widget sends flowtifyy-nav-pop to the iframe, which restores the correct view.
💡

URL Sync only works when the cart widget script is embedded on the parent page. Pure iframe embeds without the widget do not support this feature.

🔌 REST API Basic+

Flowtifyy's JSON REST API is fully system- and CMS-independent. Integrate the shop into your own frontend, native app or external system without Webflow, an iframe or a CMS plugin. You build the interface; Flowtifyy provides the shop functionality over HTTP and JSON.

Base URL

https://app.flowtifyy.com/api/{slug}/

All responses follow this format:

{ "success": true, "data": ... }
{ "success": false, "error": "Error message" }

Authentication & CORS

The public API endpoints require no API key. Under Settings → General → Allowed origin (CORS), enter the exact origin of your website (e.g. https://your-domain.com; www is a different origin). Browsers can then read responses only from that origin. Without a setting, all browser origins are allowed (*).

💡

CORS is not authentication and does not block server-to-server requests. The origin of your checkout website must match this setting for browser calls; iframe host approval is configured separately.

Endpoints

MethodEndpointDescription
GET/api/{slug}/configShop configuration (currency, VAT, payment methods)
GET/api/{slug}/productsAll active products
GET/api/{slug}/products/{slug}Single product
GET/api/{slug}/categoriesCategories
GET/api/{slug}/shipping-costCalculate shipping cost
GET/api/{slug}/address-suggestionsSwiss address suggestions for custom checkouts
GET/api/{slug}/check-customerCheck customer eligibility for invoice payment
POST/api/{slug}/ordersPlace an order

GET /products — Parameters

ParameterDescription
categoryFilter by category slug (optional)
sortprice_asc, price_desc, name (default: sort order)
GET /api/my-shop/products?category=containers&sort=price_asc

GET /shipping-cost — Parameters

ParameterDescription
valueOrder value (decimal)
quantityTotal number of items
weightTotal weight in grams
countryDelivery country (ISO code, e.g. CH, DE)
GET /api/my-shop/shipping-cost?value=49.90&quantity=2&weight=800&country=CH

GET /address-suggestions — Swiss address lookup

For physical orders shipping to CH: search only after entering both street and house number. Send address search fields only, never names or email addresses. Digital-only orders and other countries do not need Swiss address lookup.

ParameterDescription
countryCH (required; other values return an empty list)
streetStreet with house number, e.g. Bahnhofstrasse 12 (required)
zip, cityPostal code (0–4 digits) and city; include both parameters, using empty strings if not entered yet
GET /api/my-shop/address-suggestions?country=CH&street=Bahnhofstrasse%2012&zip=8001&city=
{ "success": true, "data": [{ "address": "Bahnhofstrasse 12", "zip": "8001", "city": "Zürich" }] }

No match or no house number yet: data: []. Maximum 30 requests per minute per IP, then 429. If the lookup provider is unavailable: 503 with success: false. Always allow manual address entry. Orders validate Swiss shipping addresses for street, house number, four-digit postal code and city; selecting a suggestion is optional.

Example for a custom checkout form

Add these fields and the script to your checkout page; replace SHOP-SLUG. For physical goods use lookup only when the country is CH; omit shipping address fields for digital-only orders.

<input id="street" aria-label="Street and house number" autocomplete="street-address">
<input id="zip" aria-label="Postal code" autocomplete="postal-code">
<input id="city" aria-label="City" autocomplete="address-level2">
<select id="country" aria-label="Shipping country"><option value="CH">Switzerland</option></select>
<div id="address-options" aria-live="polite"></div>
<small>Address data: swisstopo · Manual entry always available</small>
<script>
const street = document.getElementById("street");
const zip = document.getElementById("zip");
const city = document.getElementById("city");
const country = document.getElementById("country");
const options = document.getElementById("address-options");
let timer, request;
street.addEventListener("input", () => {
  clearTimeout(timer);
  request?.abort();
  options.replaceChildren();
  if (country.value !== "CH" || !/^.{3,}\s+\d+[a-zA-Z]?$/.test(street.value.trim())) return;
  timer = setTimeout(async () => {
    request = new AbortController();
    const params = new URLSearchParams({
      country: "CH", street: street.value.trim(), zip: zip.value.trim(), city: city.value.trim()
    });
    try {
      const response = await fetch(
        "https://app.flowtifyy.com/api/SHOP-SLUG/address-suggestions?" + params,
        { signal: request.signal }
      );
      if (!response.ok) return; // e.g. 429/503: allow manual entry
      const payload = await response.json();
      for (const item of Array.isArray(payload.data) ? payload.data : []) {
        const button = document.createElement("button");
        button.type = "button";
        button.textContent = item.address + ", " + item.zip + " " + item.city;
        button.addEventListener("click", () => {
          street.value = item.address; zip.value = item.zip; city.value = item.city;
          options.replaceChildren();
        });
        options.append(button);
      }
    } catch (error) { if (error.name !== "AbortError") options.replaceChildren(); }
  }, 350);
});
</script>

Source: Federal Office of Topography swisstopo. A selection fills customer_address, customer_zip and customer_city for POST /orders; customers can still edit the fields.

POST /orders — Request Body

Required fields: customer_name, customer_email, items; for physical products also customer_address, customer_zip and customer_city.

{
  "customer_name":    "Jane Smith",
  "customer_email":   "jane@example.com",
  "customer_phone":   "+41 79 123 45 67",
  "customer_address": "Example Street 1",
  "customer_zip":     "8001",
  "customer_city":    "Zurich",
  "customer_country": "CH",
  "customer_note":    "Please ring the bell",
  "payment_method":   "invoice",
  "items": [
    { "product_id": 42, "qty": 2 },
    { "product_id": 17, "qty": 1 }
  ]
}

Accepted values for payment_method: invoice, stripe, twint, vorauskasse, payrexx_twint, payrexx_cc — depending on the payment methods enabled in the shop.

Prices, shipping costs and VAT are calculated server-side and cannot be submitted. The response contains the order number.

ℹ️

Product IDs (product_id) are available from GET /api/{slug}/products in the id field. For Stripe payments, the additional endpoint POST /api/{slug}/create-payment-intent is required — use the built-in iframe widget or contact support for implementation details.

👥 Users & Roles

Under Users you can invite team members and assign roles.

Available roles

RolePermissions
OwnerFull access including billing, settings and user management.
AdminAll areas except billing and user management.
StaffOrders and products only (read and edit).
⭐

The number of users depends on your plan: Free 1, Basic 3, Pro 5, Unlimited unlimited.

🔐 Security & 2FA

Two-Factor Authentication (2FA)

We strongly recommend enabling 2FA for your account. Under My Profile → Security you can set up 2FA via OTP email. Once activated, a one-time code is sent to your email address with every login.

Password reset

You can reset your password at flowtifyy.com/forgot-password. You will receive a link by email valid for 60 minutes.

💡

Use a strong, unique password and enable 2FA — especially for the owner account which has access to billing and all settings.

💰 Plan & Billing

Plan overview

PlanPrice/monthProductsUsers
FreeCHF 0101
BasicCHF 19503
ProCHF 392005
UnlimitedCHF 69UnlimitedUnlimited

All paid plans include a 7-day trial without requiring a credit card upfront. Your card is only charged after the trial ends.

Upgrade / Downgrade

Under Plan & Billing you can upgrade at any time (effective immediately) or cancel (at end of billing period). Downgrading to the Free plan deactivates products above the limit.

Cancellation

Cancellation is done via Change plan / Cancel → Stripe portal. Your access remains active until the end of the paid period. There is no minimum contract period.

❓ Frequently Asked Questions

The cart widget shows no product image. What to do? ▾
Make sure you have set a main image for the product (not just gallery images). The widget always shows the product's main image. Without a main image, a placeholder icon appears.
TWINT is not shown in my shop — why? ▾
TWINT is only displayed for orders with a Swiss delivery address. If the customer enters a non-Swiss delivery address, TWINT is automatically hidden.
Can I manage multiple shops with one account? ▾
Yes. You can create multiple shops per account. Each shop has its own admin area, products, orders and settings. The subscription applies per shop — you need a separate plan for each shop.
Can I use the shop without Webflow? ▾
Yes. The shop is also directly accessible at app.flowtifyy.com/shop/YOUR-SLUG and can be embedded as an iFrame into any website — not just Webflow. A REST API is also available.
Is my data stored in Switzerland? ▾
Yes. All data is stored in a certified data centre in Zurich, Switzerland. There is no transfer to third countries. Flowtifyy is fully compliant with the Swiss DSG and GDPR.
What happens when I cancel my plan? ▾
Your account and all data are retained. At the end of the paid period, you are automatically moved to the Free plan. Products above the Free limit (10) are deactivated — not deleted.
Can I use discount codes? ▾
Discount codes are handled via Stripe promotion codes. As a superadmin, you can create general marketing codes (e.g. for social media) or individual codes for specific customers. Customers enter the code during Stripe checkout.

📬 Support

We're happy to help. Here's how to reach us:

ChannelDetails
Emailsupport@flowtifyy.com
Response timeBasic: up to 48 hrs — Pro: up to 24 hrs — Unlimited: dedicated support
Feature requestsRoadmap & Feature Requests
💡

When contacting support, please always mention your shop URL (slug), a brief description of the issue and — if available — a screenshot. This helps us help you faster.