Get started
This page describes the installation & update process of 66biolinks, as well as technical features.
Most features inside 66biolinks are self-explanatory and have helper texts near them.
Installation steps are straight-forward, minimum web related knowledge is required.
Support is exclusively handled through email. Ensure to attach proof of purchase when requesting support.
Requirements
Ensure your server meets the specified requirements prior to installation or purchase.
These requirements assume you're running on a decent, up-to-date server with the essential extensions already in place.
| PHP | PHP 8.4 - 8.5 |
| Extensions | cURL, OpenSSL, mbstring, MySQLi |
| Database | MySQL 5.7.3+ or MariaDB equivalent |
| Server | Apache or Nginx |
Installation Services
We offer fast & reliable installation services at an affordable price.
Software installation - $35
- Uploading the product files on your server (requires a fully configured and ready to go server).
- Creating and configuring the database that is going to be used.
- Full installation of the product.
Server configuration & software installation - $69
- Setting up a new server (Ubuntu OS) on one of those platforms: Hetzner, Cloudways, Vultr, DigitalOcean
- Setting up the domain for the server
- Free SSL Certificate Installation (Let's Encrypt)
- Installation of Apache, MySQL with MySQLi, PHP
- Installation and configuration of PHP's necessary modules / extensions
- Full installation of the product
Product Update - $30
- Backup of the files & database (upon request).
- Update of the product to the latest version (no matter which version you are currently on).
- Update of all the plugins you own (if any).
Installation
The installation takes approximately 10 minutes.
Prepare the database
- Create a new database user (optional).
- Create a new database.
- Keep the database Host, Name, Username and Password available for the installation.
Upload the product
- Upload the contents of the
product/folder to your web host. - Install it on a domain, subdomain or subfolder, depending on your needs.
- Apache: Ensure the
.htaccessfile is uploaded. It may be hidden on your computer. - Nginx: Complete the Nginx setup after installation.
Run the installation
- Open
domain.com/installin your browser. - Set the required file and folder permissions to 755, 775 or 777, depending on your server configuration.
- Follow the installation steps.
- After a successful installation, your admin login credentials will be displayed.
Set up cron jobs
Cron jobs are required for background tasks.
- Go to Admin Panel → Settings → Cron.
- Create a cron job for each command displayed there.
- If needed, refer to your hosting provider's documentation for instructions on creating cron jobs.
Set up email
Configure SMTP if you want the site to send emails.
- Go to Admin Panel → Settings → SMTP (Email).
- Enter your SMTP provider credentials.
- Save the settings and send a test email.
Update
Follow these steps to update your current installation to the latest version.
Before updating, review the latest changes in the changelog and demo.
Create a backup
Back up your installation before starting the update.
- Back up your database.
- Back up your product files.
Update the files
- Download and extract the latest version of the product.
- Open the
product/folder and upload its contents over your existing installation. - Do not overwrite the
config.phpfile.
Update the database
- Open
domain.com/updatein your browser. - Follow the update steps.
- After the update is complete, delete the
update/folder from your server.
Update plugins
- Go to Admin Panel → Plugins and update any plugins with newer versions available.
- If you use the Offload plugin, also replace the assets in your offloaded storage with the latest files from the
themes/assets/folder.
Caching
Caching is used throughout the application to reduce database load and improve response times.
By default, caching is enabled and uses the file system to store selected database query results.
Caching can be disabled if needed (not recommended) by opening index.php and setting the CACHE constant to 0. This disables caching across the entire application.
To change the cache driver, edit config.php and set the CACHE_DRIVER constant to files, apcu, or redis.
You can switch caching from the file system to Redis if your host supports it.
To enable Redis, edit config.php, configure your Redis connection settings, and set the REDIS_IS_ENABLED constant to 1.
Recommendation: Redis > APCu > File system > No caching. Use Redis when available and memory allows; otherwise, use APCu or the default file system caching.
NGINX Setup
Use the following NGINX rewrite rule to ensure proper functionality of the URLs:
if (!-e $request_filename) {
rewrite ^\/(.+)$ /index.php?altum=$1 last;
}
This command should be added in your domain.conf nginx file in the location / { ... } field.
Docker
Docker is optional and intended for users who prefer container-based deployment instead of the standard shared hosting or VPS installation.
Requirements
Make sure Docker and Docker Compose are installed and running on your system.
Start the application
- The
Dockerfileanddocker-compose.ymlfiles are included in the root folder of the product. - Open a terminal and navigate to the product folder.
- Start the Docker containers:
docker compose up -d
- Open
http://localhost/installin your browser and follow the installation process.
Database configuration
Use the following database credentials during installation:
- Host:
db - Port:
3306 - Username:
root - Password:
root - Database:
app
SSL configuration
SSL should be configured at the server level using a reverse proxy in front of the Docker container.
Captchas
These are the steps to integrate more advanced and powerful captcha codes for your system.
Cloudflare Turnstile
- In your Admin Panel → Settings → Captcha page, set the captcha type to Cloudflare Turnstile.
- Log in to your Cloudflare Dashboard.
- In the sidebar, go to Turnstile and click Add Widget.
- Fill in the form:
- Widget Name – a descriptive name (e.g., "Website Login").
- Domain – your actual website domain (e.g.,
yourdomain.com). - Widget Mode – choose Managed for the simplest setup.
- Click Create to generate the widget.
- Cloudflare will now provide a Site Key and Secret Key.
- Go back to your Admin Panel and paste these keys into the fields under the Captcha settings.
- Click Save to apply the new settings.
Google reCAPTCHA
- In your Admin Panel → Settings → Captcha page, set the captcha type to Google reCAPTCHA v2 Checkbox.
- Log in to the Google reCAPTCHA Admin Console.
- Register a new site:
- Label – a name for your site.
- Select reCAPTCHA v2.
- Add your website domain.
- Once created, copy the Site Key and Secret Key.
- Paste these keys into the corresponding fields in your Admin Panel.
- Click Save to enable Google reCAPTCHA on your site.
hCaptcha
- In your Admin Panel → Settings → Captcha page, set the captcha type to hCaptcha.
- Go to the hCaptcha Website and log in or create an account.
- Navigate to Sites → Add New Site.
- Fill out the required details:
- Site Name
- Domains – your actual website domain.
- After saving, hCaptcha will generate a Site Key.
- Go to Settings → Account and copy your Secret Key.
- Paste both the Site Key and Secret Key into the corresponding fields in your Admin Panel.
- Click Save to activate hCaptcha on your site.
Payment Processors
Follow these steps to connect your system with available payment gateways. Only available for Extended License holders.
PayPal
- Go to the PayPal Developer Dashboard and log in.
- Go to My Apps & Credentials → REST API Apps and click Create App.
- Enter an app name and other required details, then create it.
- Switch the app to Live Mode using the toggle near the app name.
- Copy the Client ID and Secret.
- In your Admin Panel → Settings → Processors → PayPal page, paste the Client ID and Secret. Set the Mode to Live and Submit the settings.
- Back in PayPal Dashboard, open the created app and go to the Webhooks section.
- Click Add Webhook and set the URL:
https://yourdomain.com/webhook-paypal - Select the events:
- Payment sale completed
- Checkout order approved
- Save the webhook.
Stripe
- Log in to the Stripe Dashboard.
- Go to Developers → API Keys.
- Ensure your keys are set to Live Mode to accept real payments.
- Copy the Publishable Key and Secret Key.
- In your Admin Panel → Settings → Processors → Stripe page, paste the keys and save.
- From the Stripe sidebar, go to Developers → Webhooks and click Add Endpoint.
- Set the Endpoint URL:
https://yourdomain.com/webhook-stripe - Select events to send:
checkout.session.completedinvoice.paidinvoice.upcoming
- Save the webhook and copy the Signing Secret.
- In your Admin Panel, paste the Signing Secret into the Webhook Secret field under the Stripe tab.
Offline Payments
- Enable offline payments in your Admin Panel → Settings → Processors → Offline payment page.
- In the Instructions field, add clear details about how customers should complete offline payments (e.g., bank account details).
- When customers check out, they can select offline payment as a method.
- They will see the instructions and must upload proof of payment.
- As an admin, go to Admin Panel → Payments, review proofs, and approve valid payments.
- Upon approval, the plan is activated for the customer.
- If proof is invalid or fake, delete the payment to reject it.
Coinbase Commerce
- Log in to the Coinbase Dashboard.
- Go to Settings.
- Under API Keys, generate and copy your API Key.
- In your Admin Panel → Settings → Processors → Coinbase page, paste the API Key.
- Under Webhook Subscriptions, click Add Endpoint and enter:
https://yourdomain.com/webhook-coinbase - Save the webhook and copy the Shared Secret.
- In your Admin Panel, paste the Shared Secret into the Webhook Secret field under the Coinbase tab.
Crypto.com
- Log in to the Crypto.com Merchant Dashboard.
- Go to Developers → API Keys.
- Copy your Publishable Key and Secret Key.
- In your Admin Panel → Settings → Processors → Crypto.com page, paste the keys.
- Go to Webhooks in the Crypto.com dashboard and click Add Webhook.
- Set the URL:
https://yourdomain.com/webhook-crypto-com - Copy the Signature Secret and paste it into the Webhook Secret field in your Admin Panel.
PayU
- Log in to your PayU account.
- Create a new shop and fill in all required details.
- In your Admin Panel → Settings → Processors → PayU page, paste the provided API keys.
Iyzico
- Log in to the Iyzico Merchant Dashboard.
- Go to Merchant Settings.
- Copy your API Key and Secret Key.
- In your Admin Panel → Settings → Processors → Iyzico page, paste the keys.
- Scroll to the Merchant Notifications section and add:
https://yourdomain.com/webhook-iyzico - Save the configuration.
Paystack
- Log in to your Paystack Dashboard.
- Go to Settings → API Keys & Webhooks.
- In your Admin Panel → Settings → Processors → Paystack page, paste the API keys.
- In Paystack, set your Webhook URL to:
https://yourdomain.com/webhook-paystack - Save changes.
Razorpay
- Log in to your Razorpay Dashboard.
- Go to Settings → API Keys and generate keys.
- In your Admin Panel → Settings → Processors → Razorpay page, paste the keys.
- Go to Settings → Webhooks and click Add New Webhook.
- Set the Webhook URL:
https://yourdomain.com/webhook-razorpay - Create a new Webhook Secret (like a password).
- Enable these events:
subscription.chargedpayment_link.paid
- Save the webhook, then paste the secret into the Razorpay tab in your Admin Panel.
Mollie
- Log in to your Mollie Dashboard.
- Go to Developers → API Keys and copy your Live API Key.
- In your Admin Panel → Settings → Processors → Mollie page, paste the key.
- Activate allowed payment methods in your Mollie account.
Yookassa
- Log in to your Yookassa Dashboard.
- Go to Developers → API Keys and generate keys.
- In your Admin Panel → Settings → Processors → Yookassa page, paste the keys.
- Go to Integration → HTTP Notifications and add:
https://yourdomain.com/webhook-yookassa - Ensure receipts/invoices are enabled for compliance.
Paddle Classic
- Log in to the Paddle Vendors Dashboard.
- Go to Developer Tools → Authentication and copy your Vendor ID and API Key.
- In your Admin Panel → Settings → Processors → Paddle page, paste the Vendor ID and API Key.
- Go to Developer Tools → Public Key and copy it into the Public Key field in your Admin Panel.
Paddle Billing
- Log in to your Paddle Billing Dashboard.
- Go to Developer Tools → Authentication:
- Under the API Keys tab, click New API Key.
- Enable All permissions for Write.
- Copy the generated API Key.
- In your Admin Panel → Settings → Processors → Paddle Billing page, paste the key and save.
- Still under Authentication:
- Go to the Client-side Tokens tab.
- Click New Client-side Token and copy the Token.
- In your Admin Panel → Settings → Payment Processors → Paddle, paste the token and save.
- Next, go to Developer Tools → Notifications:
- Click New Destination.
- In the URL field, enter your webhook endpoint:
https://yourdomain.com/webhook-paddle - In the Events section, select only:
subscription.createdsubscription.updatedtransaction.paid
- Save the destination, then click Edit and copy the Secret Key.
- In your Admin Panel → Settings → Payment Processors → Paddle, paste the Secret Key and save.
- Finally, go to Checkout → Checkout Settings and set your website URL in the Default Payment Link field.
Midtrans
- Log in to the Midtrans Dashboard.
- Go to Settings → Access Keys and copy your Server Key.
- In your Admin Panel → Settings → Processors → Midtrans page, paste the Server Key.
Flutterwave
- Log in to the Flutterwave Dashboard.
- Go to Settings → API Keys and copy your Secret Key.
- In your Admin Panel → Settings → Processors → Flutterwave page, paste the Secret Key.
- Go to the Flutterwave Webhooks page and add:
https://yourdomain.com/webhook-flutterwave
LemonSqueezy
- Log in to LemonSqueezy.
- Create a product in LemonSqueezy.
- Create variants for:
- One-time Payments (Monthly, Quarterly, Biannual, Annual, Lifetime)
- Recurring Payments (Monthly, Annual)
- Go to Settings → API Keys and generate an API key.
- In your Admin Panel → Settings → Processors → LemonSqueezy page, paste:
- API Key
- Store ID (found in store settings)
- Each Variant ID for your products
- Go to Settings → Webhooks and create a webhook with URL:
https://yourdomain.com/webhook-lemonsqueezy - Select events:
order_createdsubscription_payment_success
- Copy the Signing Secret and paste it into the LemonSqueezy tab in your Admin Panel.
Klarna
- Log in to the Klarna Portal or Klarna Playground Portal (development).
- Go to Settings → Klarna API Keys page.
- Generate your new Klarna API key & make sure to copy both the Username and Password.
- In your Admin Panel → Settings → Processors → Klarna page, paste the keys and save.
Plisio
- Log in to your Plisio Dashboard.
- Ensure your domain is connected and your crypto wallets are properly configured.
- Navigate to the API page, then click on the Site Settings button for your connected domain.
- Copy the generated Secret Key and paste it into your Admin Panel → Settings → Processors → Plisio page.
- Specify the list of cryptocurrencies you wish to accept, choose your default currency, and save the settings.
1pay
- Log in to your 1pay account.
- Find your checkout instance name. If your checkout domain is
yourname.1pay.ch, use onlyyourname. - Go to the API settings page and copy your API Key.
- In your Admin Panel → Settings → Processors → 1pay page, enable 1pay payments, paste the instance name and API key.
- Select the currencies that you want to accept through 1pay.
- Create a new webhook in your 1pay account and set the webhook URL to:
https://yourdomain.com/webhook-onepay - Make sure the webhook sends JSON requests.
- Copy the Webhook Signing Key and paste it into your Admin Panel → Settings → Processors → 1pay page.
- Optionally add a Look&Feel Profile ID if you want to use a custom 1pay checkout design.
- Optionally add a Subscription Cancellation Interval if you want to use a custom cancellation period for recurring payments. Use the PHP interval format, such as
P1Mfor one month. - Save the settings and make a test payment to confirm the integration works properly.
Revolut
- Log in to your Revolut Business dashboard.
- Navigate to the Settings page, then click on the APIs sidebar link, then in the Merchant API section.
- Copy the generated API secret Key, paste it into your Admin Panel → Settings → Processors → Revolut page, and save the settings.
Taxes & Billing
Use the Taxes & Billing system to collect billing information and apply taxes to paid plans.
Enable taxes & billing
- Go to Admin Panel → Settings → Payment.
- Enable the Taxes & Billing system.
Create a tax
- Go to Admin Panel → Taxes.
- Select Create Tax.
- Configure the tax according to your requirements and save it.
Assign a tax to a plan
- Go to Admin Panel → Plans.
- Select the paid plan you want to configure.
- Assign the desired tax and save the plan.
Multicurrency
Multicurrency allows users to choose from the currencies you make available.
Enable multicurrency
Go to Admin Panel → Settings → Payment and configure the currencies you want to support.
Configure plan prices
Go to Admin Panel → Plans, select a plan and set its price for each supported currency.
Configure payment processors
Go to Admin Panel → Settings and enable or disable currencies individually for each payment processor.
Configure exchange rates
For automatic currency conversion, obtain an API key from FreeCurrencyAPI.com and add it under Admin Panel → Settings → Payment.
The API key is optional, but recommended. It converts transactions to your default currency so administrative statistics remain consistent across multiple currencies.
Webhook verification
Each webhook which comes from the Admin panel → Settings → Webhooks page, includes a unique ID, a timestamp, and a signature in each request. These values are sent as HTTP headers and are required for verification.
On your endpoint, you must read the raw request body, rebuild the signed payload, and verify the signature using your webhook secret key.
The signed payload is created in the following order:
webhook_id.webhook_timestamp.raw_body
The signature is generated using HMAC SHA-256, base64-encoded, and sent in the
Webhook-Signature header with a v1, prefix.
You must also validate the timestamp and reject requests outside a 5-minute window to prevent replay attacks.
Use the following PHP example to verify incoming webhooks:
/* Get webhook related headers */
$webhook_id = $_SERVER['HTTP_WEBHOOK_ID'] ?? null;
$webhook_timestamp = $_SERVER['HTTP_WEBHOOK_TIMESTAMP'] ?? null;
$webhook_signature = $_SERVER['HTTP_WEBHOOK_SIGNATURE'] ?? null;
if (!$webhook_id || !$webhook_timestamp || !$webhook_signature) {
http_response_code(400);
die();
}
/* 5 minute tolerance replay window */
if (abs(time() - (int) $webhook_timestamp) > 300) {
http_response_code(400);
die();
}
/* Get raw posted body of the request */
$raw_body = file_get_contents('php://input');
/* Start regenerating the signature */
$signed_payload = $webhook_id . '.' . $webhook_timestamp . '.' . $raw_body;
/* Webhook secret key from the admin panel */
$secret_key = settings()→webhooks→secret_key;
/* Strip the version from the webhook signature */
$signature_key = substr($webhook_signature, strlen('v1,'));
/* Generate expected signature to compare */
$expected_signature = base64_encode(
hash_hmac('sha256', $signed_payload, $secret_key, true)
);
/* Compare the signatures */
if (!hash_equals($expected_signature, $signature_key)) {
http_response_code(401);
die();
}
/* Continue with your own processing */
OpenAI integration
Connect your system to the OpenAI API to enable AI-powered features such as AI translation.
Create an API key
- Log in to the OpenAI API Platform.
- Open the API Keys page for the project you want to use.
- Create a new secret key and optionally give it a descriptive name, such as
Production Website. - Copy and securely store the generated API key. The full secret key is only displayed when it is created.
Configure 66biolinks
- Go to Admin Panel → Settings → Main → Other settings.
- Paste the API key into the OpenAI API key field.
- Save the settings.
API billing
OpenAI API usage is billed separately from ChatGPT subscriptions. Configure API billing in your OpenAI API Platform account if required.
Google Safe Browsing
Google Safe Browsing checks submitted URLs against Google's lists of unsafe web resources, including phishing, malware and unwanted software.
Create an API key
- Go to the Google Cloud Console and log in to your Google account.
- Create a new project or select an existing one.
- Open APIs & Services → Library, search for Safe Browsing API and enable it.
- Go to APIs & Services → Credentials.
- Select Create credentials → API key.
- Copy the generated API key.
Configure the integration
- Go to Admin Panel → Settings → Links.
- Paste the API key into the Google Safe Browsing API Key field.
- Save the settings.
Secure the API key
Restrict the API key to the Safe Browsing API from your Google Cloud credentials settings to prevent it from being used with other Google APIs.
Google Static Maps
Google Static Maps allows users to display Google Maps through the Map block on their biolink pages.
Create an API key
- Go to the Google Cloud Console and log in to your Google account.
- Create a new project or select an existing one.
- Open APIs & Services → Library, search for Maps Static API and enable it.
- Go to APIs & Services → Credentials.
- Select Create credentials → API key.
- Copy the generated API key.
Configure the integration
- Go to Admin Panel → Settings → Links.
- Paste the API key into the Google Static Maps API Key field.
- Save the settings.
Secure the API key
Restrict the API key to the Maps Static API and limit its usage to the domains where your product is installed.
Google Geocoding
Google Geocoding allows users to enter a location as text in the Weather block and automatically converts it to latitude and longitude coordinates.
Create an API key
- Go to the Google Cloud Console and log in to your Google account.
- Create a new project or select an existing one.
- Make sure billing is enabled for the project.
- Open APIs & Services → Library, search for Geocoding API and enable it.
- Go to APIs & Services → Credentials.
- Select Create credentials → API key.
- Copy the generated API key.
Configure the integration
- Go to Admin Panel → Settings → Links.
- Paste the API key into the Google Geocoding API Key field.
- Save the settings.
Secure the API key
Restrict the API key to the Geocoding API from your Google Cloud credentials settings. You can also configure an application restriction appropriate for your server setup.
Custom domains
Custom domains allow you and your users to use additional domains when creating supported resources.
Add a custom domain
- Go to Admin Panel → Domains and add the domain or subdomain you want to use.
- Configure its DNS records so it points to the same server as your main product installation.
- Make sure the domain is configured on your hosting platform or web server.
- Issue an SSL certificate for the domain.
Configure DNS
Configure the domain with one of the following methods, depending on your setup:
- A record: point the domain to your server's IPv4 address.
- CNAME record: for subdomains, point them to the hostname of your main installation, such as
example.com.
DNS configuration varies between providers and changes may take some time to propagate.
Shared hosting
If you use a shared hosting control panel such as cPanel:
- Open the Domains or Addon Domains section.
- Add the new domain or subdomain.
- Set its Document Root to the same directory as your existing product installation.
- Enable or issue an SSL certificate for the new domain.
VPS or dedicated server
Configure your web server so the new domain points to the same product installation.
- Make sure the domain's DNS records point to your server.
- Add the domain to your Apache or Nginx virtual host configuration.
- Configure it to use the same product installation directory.
- Issue an SSL certificate for the new domain.
The exact configuration depends on your server setup and may require assistance from a server administrator.
Notification handlers
Twilio notification handler (SMS & Call)
- Go to Twilio Console and make sure to login to your account.
- Get a phone number from Twilio and then scroll down in the Console Dashboard to see the Account info section.
- Go to your product installation → Admin panel → Settings → Notification handlers page.
- Enable the Twilio notification handler while also copying the Account SID, Account token & Phone number from Twilio and pasting it their respective fields.
- To enable different regions for Twilio SMS, go to Twilio Console → Messaging → Settings → Geo Permissions page.
- To enable different regions for Twilio calling, go to Voice Geographic Permissions page.
WhatsApp notification handler (WhatsApp message)
- Go to Facebook Developers page.
- Make sure to login to your Facebook account.
- Click on the My Apps menu dropdown and click on Create app.
- Select the Other use case and continue.
- Select the Business app type and continue.
- Fill the other needed fields and continue (Make sure to attach your Business Account).
- After finishing it up, choose Add Product from the sidebar of your dashboard.
- Make sure you add the WhatsApp product to your app.
- After that, go to WhatsApp → API Setup page.
- Add your own business From phone number and confirm it.
- Copy your Phone number ID and paste it into the product installation → Admin panel → Settings → Notification handlers page.
- Open the Auth token documentation from Facebook and get your Permanent Access token, so that you can paste it into the same page in your installation as above.
- After that, go to WhatsApp → Quickstart page → Message templates page.
- Now you must create a template for each type of notification you will send out, do it as per the data below.
| Name | test_notification_handler |
| Language | English |
| Category | Utility |
| Content |
This is a test message. |
| Name | guest_payment |
| Language | English |
| Category | Utility |
| Content |
You sold '{{1}}' for {{2}} {{3}} 💰.
View all details at {{4}} 🔗
|
| Sample {{1}} | Example |
| Sample {{2}} | 55 |
| Sample {{3}} | USD |
| Sample {{4}} | https://YOUR_DOMAIN_HERE/url/1 |
| Name | caught_data |
| Language | English |
| Category | Utility |
| Content |
Caught new submitted data to your biolink block '{{1}}' for '{{2}}' url.
View all details at {{3}} 🔗
|
| Sample {{1}} | Example |
| Sample {{2}} | Sample |
| Sample {{3}} | https://YOUR_DOMAIN_HERE/data/1 |
AIX plugin
The AIX plugin adds AI-powered features such as document generation, image generation, speech-to-text and chat.
Install the plugin
- Download and extract the plugin files.
- Upload the
aixfolder to theplugins/folder of your product installation. - Go to Admin Panel → Plugins, find the AIX plugin and enable it.
Configure OpenAI
OpenAI powers the document, image, speech-to-text and chat features of the AIX plugin.
- Log in to the OpenAI API Platform.
- Open the API Keys page for the project you want to use.
- Create a new secret key and copy it securely.
- Go to Admin Panel → Settings → AIX and paste it into the OpenAI API Key field.
- Enable and configure the OpenAI features you want to provide, then save the settings.
Configure plan limits
Go to Admin Panel → Plans to configure the AIX features and usage limits available for each plan.
Clipdrop integration
Clipdrop is used for additional AI image generation functionality.
- Go to the Clipdrop API page.
- Obtain your API key if your account and AIX plugin version support the Clipdrop API.
- Go to Admin Panel → Settings → AIX and paste it into the Clipdrop API Key field.
- Save the settings.
Chrome Extension plugin
This is the installation documentation for the Chrome Extension plugin.
Chrome Extension files
- Go inside of the
Chrome Extensionfolder from the downloaded product files. - These are the actual files of the Chrome Extension that must be provided to your users or submitted to the Chrome Web Store.
- You can edit the
extension-config.js&manifest.jsfiles in case you wish to change any of the extension strings or default configuration values. - You are also free to edit the extension icons for a more personalized experience.
Extension distribution
You now must decide how you want to provide the Chrome Extension to your users.
-
Submit the extension to the Chrome Web Store
This is the recommended option if you want users to easily install the extension directly from the official Chrome Web Store. -
Provide the extension files manually
You can create a ZIP archive of theChrome Extensionfolder and provide it directly to your users without submitting it to the official Chrome Web Store.
Manual Chrome installation
If you decide to provide the extension files manually, your users can install the extension in Chrome by following the steps below.
- Download the Chrome Extension ZIP file that you provide.
- Unzip the downloaded file on their computer.
- Open Chrome and go to
chrome://extensions/. - Click on Manage Extensions if they are not already on that page.
- Enable Developer mode by using the toggle from the top right corner.
- Click on Load unpacked.
- Select the unzipped Chrome Extension folder.
- The extension icon should now appear in the Chrome toolbar.
Plugin installation
- Download the product files after purchasing & unzip them.
- Upload the
chrome-extensionfolder to your main product installation, inside of thepluginsfolder. - Go to your installation website → Admin panel → Plugins page.
- Find the Chrome Extension plugin and install / enable it.
- After the plugin is enabled, go to Admin panel → Settings → Chrome Extension page.
- Configure the needed settings and make sure to save the changes.
Digital Wallets plugin
This is the installation documentation for the Digital Wallets plugin, which allows your users to create digital wallet cards that can be added to Google Wallet and Apple Wallet.
Google Wallet API setup
- Go to the Google Pay & Wallet Console and make sure to login to your Google account.
- Create a new Google Wallet API Issuer account or use an already existing one.
- Copy your Issuer ID, as it will be needed later in your product installation.
- Go to the Google Cloud Console and create a new project or select an already existing project that you want to use.
- Go to the APIs & Services → Library page.
- Search for Google Wallet API and enable it for your selected project.
- Go to the IAM & Admin → Service Accounts page.
- Create a new service account with a descriptive name, such as
digital-wallets-api. - After creating the service account, go to the Keys tab.
- Click on Add key → Create new key and select the JSON key type.
- Download the generated JSON key file and keep it safe, as it will be needed in your product installation.
- Copy the service account email address, as it will also be needed in the Google Wallet Console.
Google Wallet Console permissions
- Go back to the Google Pay & Wallet Console.
- Navigate to the Users section.
- Invite the service account email address that you created in Google Cloud Console.
- Give the service account Developer access.
- Save the changes and make sure the service account is listed as an active user in your Google Wallet issuer account.
Apple Wallet requirements
- Enroll in the Apple Developer Program. Apple Wallet pass certificates require an active membership.
- Make sure your product installation uses HTTPS in production.
- Use an Apple Account with access to Certificates, Identifiers & Profiles.
- Have an iPhone or a Mac with Apple Wallet available for the final pass installation test.
An iOS application, App Store submission, Apple Pay merchant account, and payment processing integration are not required.
Create the Apple Pass Type ID
- Go to the Apple Developer Identifiers page.
- Click the + button and select Pass Type IDs.
- Enter a description for your installation.
- Enter an identifier using the reverse-domain format, such as
pass.com.example.digitalwallets. - Register the identifier and save the exact Pass Type ID for the product settings.
- Copy your Apple Team ID from the Apple Developer membership details page.
Create and export the Apple pass certificate
- Open Keychain Access on macOS.
- Go to Certificate Assistant → Request a Certificate From a Certificate Authority.
- Enter your Apple Developer email address, select Saved to disk, and generate the certificate signing request file.
- Return to the Pass Type ID in the Apple Developer portal and click Create Certificate.
- Upload the certificate signing request and download the generated Pass Type ID certificate.
- Open the downloaded certificate to install it in Keychain Access.
- In Keychain Access, locate the pass certificate and its private key, then export both together as a password-protected
.p12file. - Keep the
.p12file and password private. They can be used to sign passes for your Pass Type ID.
Download the Apple WWDR certificate
- Go to Apple's Certificate Authority page.
- Download the current Worldwide Developer Relations intermediate certificate used for Apple Wallet pass signing.
- Keep the downloaded
.cerfile for the Digital Wallets settings page.
Plugin installation
- Download the product files after purchasing & unzip them.
- Upload the
digital-walletsfolder to your main product installation, inside of thepluginsfolder. - Go to your installation website → Admin panel → Plugins page.
- Find the Digital Wallets plugin and install / enable it.
- After the plugin is enabled, go to Admin panel → Settings → Digital Wallets page.
- Enable the Google Wallet integration.
- Paste your Google Wallet Issuer ID into the provided field.
- Upload or paste the contents of your Google service account JSON key into the provided field.
- To use Apple Wallet, enable the Apple Wallet integration.
- Enter the Apple Pass Type ID, Team ID, and organization name.
- Upload the password-protected
.p12pass certificate and enter its export password. - Upload the Apple WWDR
.ceror.pemcertificate. - Save the changes.
- Make sure to change your plan features access from the product installation → Admin panel → Plans page as well.
Using Digital Wallets
- After the plugin is configured, users will be able to create wallet cards from their account dashboard.
- Each wallet card can contain details such as a title, subtitle, logo, cover image, background color, QR code destination, phone number, email address, website, and other custom fields.
- The QR code destination can point to an existing biolink page, vCard link, event link, short URL, or any custom URL.
- Users can display their wallet cards on their biolink pages by using the dedicated wallet card biolink block.
- The biolink block can display Google Wallet, Apple Wallet, or both wallet buttons.
- Visitors can save the card by clicking the matching Add to Google Wallet or Add to Apple Wallet button.
- The existing wallet URL remains compatible. Google Wallet is used by default when both integrations are enabled.
Google Wallet production access
New Google Wallet API issuer accounts start in Demo Mode. While in demo mode, wallet cards can only be saved by users with Administrator or Developer access to your issuer account, or by users added as test accounts.
To make your Google Wallet cards publicly available to all users, you must request publishing access from Google.
- Go to the Google Pay & Wallet Console.
- Make sure your Business Profile is completed.
- Make sure you have created at least one Passes Class for your issuer account.
- Open the Google Wallet API section.
- Find the Get publishing access section.
- Click Request publishing access and submit the request.
- Google will review your issuer account and notify you when publishing access has been approved.
[TEST ONLY] label.
Apple certificate renewal
- Apple Wallet pass certificates expire and must be renewed through the Apple Developer portal.
- Create or renew the certificate for the same Pass Type ID.
- Export the renewed certificate and private key as a new
.p12file. - Upload the new file and password in the Apple Wallet settings, then save the changes.
Hosting & Domains
Managed Cloud Hosting
- ☁️ Cloudways - use code ALTUM for 20% off your first 3 months
Shared Hosting
- 🏷️ Namecheap - affordable beginner option
- 🌍 SiteGround - beginner-friendly shared hosting
Self-managed VPS Hosting
- 🇩🇪 Hetzner - use affiliated link for 20€ credit
Domains
- 🏷️ Namecheap - good prices and a good user experience
We recommend Cloudways for beginners or intermediates. We currently use Hetzner for hosting and Namecheap for domains for all AltumCode websites.
Frequently asked questions
Answers to common questions and troubleshooting issues.
This is usually caused by an incorrect server rewrite configuration.
Nginx: Make sure you completed the Nginx setup.
Apache:
- Make sure the
.htaccessfile was uploaded. - Make sure the
.htaccessfile has the correct permissions, usually644. - Make sure
mod_rewriteis enabled on your server. - Restore the original
.htaccessfile if it was modified.
- If your server uses
.htaccess, try removing its first line. Some server configurations do not support it. - If the error occurs when submitting a form, your web host may be blocking the request. Try disabling
mod_securityor contact your hosting provider.
Spam registrations cannot be completely eliminated, but the available protection features can significantly reduce them.
- Email confirmation - Admin Panel → Settings → Users
- Captcha - Admin Panel → Settings → Captcha
- Country blocking - Admin Panel → Settings → Users
- Email domain blocking - Admin Panel → Settings → Users
- Automatically delete unconfirmed or old users - Admin Panel → Settings → Users
- Bulk delete users - Admin Panel → Users
- Email Shield plugin - adds blacklist and additional signup protection
- Open your product database using a database manager such as phpMyAdmin.
- Open the
userstable and find your admin account. - Set its password to
$2y$10$uFNO0pQKEHSFcus1zSFlveiPCB3EvG9ZlES7XKgJFTAl5JbRGFCWy. This temporarily sets the password toadmin. - Delete the folder inside
uploads/cache/to clear the cache. - Log in and immediately change your password.
- Open your product database using a database manager such as phpMyAdmin.
- Open the
settingstable and find thecaptchakey. - Edit its
valueand change"login_is_enabled":trueto"login_is_enabled":false. - Delete the folder inside
uploads/cache/to clear the cache.
Go to Admin Panel → Languages → {language name} → Translate app to change static website text.
It is recommended to create a new language instead of editing the original one, so your changes are not overwritten during future updates.
Advanced users can also edit the language files directly:
- User side:
app/languages/english#en.php - Admin side:
app/languages/admin/english#en.php
Create a new language from Admin Panel → Languages → Create language, then use Translate app to translate its strings.
Advanced users can also duplicate the original language files and follow the same naming format: language_name#language_code.php.
Your server is limiting the number of form fields that can be submitted at once.
Increase the PHP max_input_vars setting to the value displayed under Admin Panel → Languages → {language name} → Translate app.
Contact your hosting provider if you cannot change this setting yourself.
- Page structure and components: edit
themes/altum/views/index/index.php. - Text: use the language system.
- Images: go to Admin Panel → Settings → Custom images.
- Custom landing page: go to Admin Panel → Settings and configure the Custom landing page URL.
Choose the method that best matches what you want to customize:
- Theme colors: Admin Panel → Settings → Theme
- Custom CSS: Admin Panel → Settings → Custom CSS
- CSS files: edit the files in
themes/altum/assets/css/ - SCSS: edit and recompile the source files (advanced)
Support for custom design work is not included.
- Back up your product files and database.
- Move both to the new server.
- Update the
config.phpfile with the new server and database details. - Verify that all configuration values are correct for the new hosting environment.
Social Logins
Follow these updated steps to set up additional login methods via popular social networks. Make sure to use HTTPS for all redirect URIs and verify your domains when required.
Facebook Login
- App Domains
- Privacy Policy URL
- Terms of Service URL
- App Icon (recommended)
Your domain must be verified if requested.https://yourdomain.com/login/facebookGoogle Login
openid,email,profile.https://yourdomain.com/login/googleTwitter (X) Login
https://yourdomain.com/login/twitterhttps://yourdomain.com/Discord Login
https://yourdomain.com/login/discordLinkedIn Login
https://yourdomain.com/login/linkedinMicrosoft Login
https://yourdomain.com/login/microsoftApple Login
com.yourdomain.web. This Services ID is the Client ID that you will enter in the Admin Panel.- Select the primary App ID created in the previous step.
- Under Domains and Subdomains, add your domain without the protocol, for example:
- Under Return URLs, add:
Save the configuration.yourdomain.com.https://yourdomain.com/login/apple.p8private key file. Apple only allows this file to be downloaded once, so store it securely..p8file with a text editor and copy its full contents, including theBEGIN PRIVATE KEYandEND PRIVATE KEYlines.- Client ID – the Services ID identifier.
- Team ID – your Apple Developer Team ID.
- Key ID – the identifier of the downloaded private key.
- Private Key – the complete contents of the
Enable Apple Login and Submit..p8file.If you send emails to users who choose Apple’s private relay address, configure Apple’s email relay service for your sending domain as well. See Apple’s private email relay documentation.
GitHub Login
https://yourdomain.com/.https://yourdomain.com/login/github