--- Title: Common questions Url: https://help.getfernand.com/getting-started/common-questions --- We understand that you may have some questions as you start using our software. Here are some of the most common questions we receive, along with their answers. ## How do I create an account? To create an account, simply click on the 'Try for free' button on our homepage and fill in the required information. Once you've submitted the form, you'll receive a confirmation email. Click the link in this email to verify your account, and you'll be all set! ## How do I reset my password? If you've forgotten your password, click on the 'Forgot Password' link on the login page. Enter your email address and we'll send you a link to reset your password. Click on this link and follow the instructions to create a new password. ## Pricing questions ### What counts as an "active" user? Active users can respond to customers directly. If this permission isn't activated, then the user is considered "Passive" and won't be charged for a seat. This means you can invite your whole team to access and collaborate on support issues at no extra cost. Please note that you can't mark the workspace owner as passive, and require at least one active user per organization ### How many passive users can I invite? There are no restrictions in the number of passive users. You can invite your whole team to collaborate on support issues at no extra cost ✨ ### Will we be charged automatically once trial is up? No. We don't ask for your credit card up front, so you'll only be charged when you decide you’re ready. No surprises. ### Do I need to sign a long term contract? Nope. You’ll be charged monthly, and you can cancel at any time. If you cancel, you’ll only be charged for the current billing period and won’t be charged again after that. ### Can I add or remove users later? You can add or remove users anytime. Once you cancel individual users, you’ll be responsible for charges incurred for that billing period, but you won’t be charged again for those users in subsequent months. ### Can I import data from my existing helpdesk system? Yes, we provide a free, manual concierge import service of all major helpdesk systems data including Zendesk, Intercom, Front, Helpscout, Crisp, and many others. ### Can I cancel anytime? Sure you can! No questions asked, no contracts, no strings attached. Once you have canceled, you’ll still have access to the service until the end of your subscription cycle. ### I'm a huge enterprise, should I contact sales? Hell no! Actually, we don't even have a sales department. We're 100% focused on building the best service for teams of 10 and less. You can still sign up at the normal rate, but we're probably not a fit. ### Where is my data hosted? Fernand is GDPR compliant and only hosted on servers in Europe. Except for yourself and, if necessary, our support engineers, nobody else has access to your data. See our privacy policy for more details. * * * ## How can I contact customer support? If you need help at any point, our customer support team is here to assist you. You can reach us via email, phone, or live chat. [Contact us](mailto:support@getfernand.com) --- Title: Signing in to Fernand Url: https://help.getfernand.com/account-and-billing/signing-in --- Welcome to Fernand! To access all the features of our software, you'll need to sign in to your account. Here's how: ## Step-by-step guide 1. Go to the Fernand homepage. 2. Click on the 'Sign In' button, usually located at the top right corner of the page. 3. Enter your email address and password in the respective fields. 4. Click 'Submit' to log in. ### Forgot your password? If you've forgotten your password, don't worry. You can easily reset it by clicking on the 'Forgot Password' link on the login page. Enter your email address and we'll send you a link to reset your password. ### Need help? If you encounter any issues while signing in, please reach out to our support team. We're here to help! --- Title: Billing and payments Url: https://help.getfernand.com/account-and-billing/billing-and-payments --- Understanding your billing and payment options is crucial to managing your account with us. Here's everything you need to know. ### How to view your bill You can view your bill at any time from your account dashboard. Simply log in to your account, navigate to the 'Billing' section, and you'll find all your past and current bills listed there. ### Payment methods We accept a variety of payment methods for your convenience. You can pay your bill using any major credit card, PayPal, or direct bank transfer. To add a new payment method, go to the 'Payment Methods' section in your account settings. ### Automatic payments For your convenience, we offer the option to set up automatic payments. This means your bill will be paid automatically each billing cycle, so you don't have to worry about missing a payment. You can set up automatic payments in the 'Billing' section of your account settings. ### Updating your billing information It's important to keep your billing information up to date to avoid any disruptions to your service. You can update your billing information at any time in the 'Billing' section of your account settings. ### Need help? If you have any questions or concerns about billing and payments, don't hesitate to reach out to our support team. We're here to help! --- Title: Account settings Url: https://help.getfernand.com/account-and-billing/account-settings --- Your account settings are where you can manage all aspects of your account, from your personal information to your preferences. Here's a quick guide on how to navigate and update your account settings. ### Accessing your account settings To access your account settings, first log in to your account. Once logged in, click on your profile icon, usually located at the top right corner of the page, and select 'Account Settings' from the dropdown menu. ### Personal information In the 'Personal Information' section, you can update your name, email address, and contact number. It's important to keep this information up to date so we can reach you with important account notifications. ### Password You can change your password in the 'Password' section. For security reasons, we recommend updating your password regularly and using a strong, unique password that is not easily guessable. ### Notification preferences In the 'Notification Preferences' section, you can customize how and when you receive notifications from us. You can choose to receive notifications via email, SMS, or in-app notifications. ### Billing information The 'Billing Information' section is where you can view your current plan, update your payment method, and see your billing history. Remember to keep your payment information up to date to avoid any service interruptions. ### Need help? If you need help navigating or updating your account settings, don't hesitate to reach out to our support team. We're here to help! --- Title: Manage members and permissions Url: https://help.getfernand.com/account-and-billing/manage-members-and-permissions --- Our software allows you to add members to your team and manage their permissions. Here's how you can do it: ## Adding members To add a new member to your team, go to the 'Team' section in your account settings. Click on 'Add Member', enter their email address, and send them an invitation to join your team. They will receive an email with instructions on how to join. ## Setting permissions Once a member has been added, you can set their permissions. Permissions determine what a member can and cannot do within the software. For example, you can set whether a member can view, edit, or delete certain data. ### Types of permissions We offer several types of permissions to suit different roles within a team. These include: * **Admin:** Can manage all aspects of the team and its data. * **Editor:** Can view and edit data, but cannot delete it. * **Viewer:** Can only view data. ### Changing permissions You can change a member's permissions at any time. To do this, go to the 'Team' section in your account settings, find the member whose permissions you want to change, and select the new permissions from the dropdown menu. ## Removing members If a member leaves your team, you can remove them from your account. To do this, go to the 'Team' section in your account settings, find the member you want to remove, and click 'Remove'. ## Need help? If you need help managing members and permissions, don't hesitate to reach out to our support team. We're here to help! --- Title: Our commitment to privacy Url: https://help.getfernand.com/security-and-privacy/our-commitment-to-privacy --- At our company, we take your privacy seriously. We are committed to protecting your personal information and using it in a manner that is consistent with your expectations and our legal obligations. Here's what you need to know about our approach to privacy: ## Information we collect We collect information that helps us provide and improve our services. This includes information you provide to us, like your name and email address, and information we collect as you use our services, like usage data and cookies. ## How we use your information We use your information to provide our services, improve our offerings, communicate with you, and protect our users and our services. We do not sell your personal information to third parties. ### Sharing your information We only share your information with third parties when necessary to provide our services, comply with the law, protect the rights and safety of our users and the public, or as part of a business transfer like a merger or acquisition. ### Your rights and choices You have rights and choices when it comes to your personal information. You can access, update, and delete your information, as well as opt out of certain data collection practices, through your account settings or by contacting us. ## Contact us If you have any questions or concerns about our privacy practices, please don't hesitate to contact us. We're here to help! --- Title: How we process your data? Url: https://help.getfernand.com/security-and-privacy/how-we-process-your-data --- We understand the importance of your personal data and are committed to processing it responsibly and in compliance with applicable data protection laws. Here's how we process your data: ## Collection of data We collect data that you provide to us directly, such as when you create an account, make a purchase, or interact with our customer support. We also collect data indirectly, such as usage data when you interact with our services. ## Use of data We use your data to provide, improve, and personalize our services. This includes using data to create your account, process your transactions, and provide customer support. We also use data for research and development, marketing, and compliance with legal obligations. ### Data storage We store your data on secure servers and implement appropriate technical and organizational measures to protect it from unauthorized access, alteration, disclosure, or destruction. ### Data sharing We only share your data with third parties when necessary to provide our services, comply with legal obligations, or with your explicit consent. We do not sell your personal data to third parties. ## Your rights You have the right to access, correct, delete your personal data, and to object to or limit its processing. You can exercise these rights through your account settings or by contacting us. ## Contact us If you have any questions about how we process your data, please don't hesitate to contact us. We're here to help! --- Title: Data processing agreement Url: https://help.getfernand.com/security-and-privacy/data-processing-agreement --- This Data Processing Agreement (DPA) complies with the EU's General Data Protection Regulation (GDPR). It forms part of the contract between the data controller and the data processor, and it lays out the responsibilities and obligations of the data processor. ## Understanding the terms The data controller ("Controller") refers to the entity determining the purpose and means of processing personal data. The data processor ("Processor") refers to the entity processing personal data on behalf of the Controller. ## Roles and responsibilities The Processor shall process the personal data only on documented instructions from the Controller, including transferring data outside of the EU, unless legally required to do so. ### The Processor agrees to: * Ensure that individuals processing the data are committed to confidentiality * Implement appropriate security measures * Assist with data subject's rights * Assist the Controller in ensuring compliance with the GDPR * Delete or return all personal data after the end of the services ## Data breach In the event of a data breach, the Processor shall notify the Controller without undue delay upon becoming aware of the breach. ## Sub-processing The Processor should not engage with another Processor without prior specific consent of the Controller. ## Termination of contract Upon termination of the contract, the Processor agrees to delete all personal data unless legal requirements dictate otherwise. --- Title: Warrant canary Url: https://help.getfernand.com/security-and-privacy/warrant-canary --- In an effort to keep our community informed about legal and security issues, we hereby declare this Warrant Canary. ## Date The current date is **October 14th, 2023**. ## Legitimate inquiries As of today, we have not received any: * Subpoenas * Warrants * National security letters * Other confidential government orders or demands ## No gag orders We confirm that we have not been placed under any gag order by a FISA court, or any other similar court of any government. ## No automated publishing This Warrant Canary update has been manually signed by an authorized staff member and was not automatically generated or published. Note: This Warrant Canary should not be construed as legal advice, and is meant solely to provide transparency about any governmental inquiry into our platform. --- Title: Report a vulnerability Url: https://help.getfernand.com/security-and-privacy/report-a-vulnerability --- We acknowledge the importance of security researchers in helping keep our systems and our users safe. We encourage responsible disclosure of security vulnerabilities via our Vulnerability Reporting Policy. ## Guidelines for reporting When reporting a vulnerability, please consider the following guidelines: * **Provide details** Include as much information as possible, including what you did, what happened and what you think the potential impact may be. Include any tools used, including versions. * **Provide reproducible steps** Clear instructions allow us to reproduce the issue and fix it more rapidly. * **Report in a timely manner** Please report the vulnerability as soon as reasonably possible. * **Do not exploit** Investigating vulnerabilities is fine, but don't use them to attack others, or to access, delete or modify others' data. * **Do not disrupt** Our services and the wider Internet should not be disrupted in the course of your research. ## How to report If you believe you've found a security vulnerability, please send it to us by emailing support@getfernand.com. Include the word 'SECURITY' in the subject line and we'll take the following steps: 1. Acknowledge your email within 48 hours 2. Investigate the issue and confirm the vulnerability 3. Address the vulnerability within a reasonable timescale ## Our commitment We take all reports of potential security vulnerabilities seriously and will respond swiftly to fix verifiable security issues. We **do not offer monetary rewards** for vulnerability reports, but we will provide a written acknowledgement of your efforts, if you're the first to report the issue. --- Title: Linear integration Url: https://help.getfernand.com/integrations/linear-integration --- This integration enables a tight feedback loop between customer and product teams using Fernand for customer support. Use it to create Linear issues from customer conversations, link conversations to existing Linear issues, surface key information between tools, and make it easier to get back to customers when bugs are fixed or feedback has been implemented. ## Setting up the integration To enable the Linear integration for your Fernand workspace, just go to Settings → Integrations → Linear. You typically need admin privileges to manage integrations. If you don’t have sufficient permissions, reach out to an admin in your organization. 1. First, navigate to the '**Settings** ' page by clicking on your avatar on the bottom right of the page, and selecting settings. You can also hit `G` then `S`. 2. Under the '**Integrations** ' tab, select '**Connect Linear** '. 3. Next, you will be redirected to a Linear's consent page for granting access to our platform. 4. Click 'Authorize', and you'll be redirected back to our platform. 5. 🎊 Tada! You will now see a new 'Linear' section in the conversation sidebar. Once you connect Linear to your workspace, it will be turned on for all the users in the workspace automatically. ## Testing the integration After you have configured the settings, we recommend to test the integration to ensure everything is working well. * Head over to a conversation and make sure the "Linear" section is showing up on the right sidebar * Try attaching an issue by hitting `L` on your keyboard, or clicking the "+ Attach or Create issue" button. * Click on the issue to view it on Linear. Your customer conversation should be added in the Links section as a reference. * Try unlinking the issue by hovering on the card and clicking on the 3 dots contextual menu → Unlink issue. The issue should disappear. * Try creating an issue from Fernand by hitting `SHIFT+L` or `⌘K` → Create linear issue. Once created, it will also be attached directly to the conversation and listed in the sidebar. ## Disconnecting Linear If at any time you would like to disconnect Fernand from your Linear account, head to the Integrations page, and you will see an option to disconnect your account. Please note that deleting your organization on Fernand will also disconnect your Linear integration automatically. * * * Overall, integrating our platform with Linear will help to streamline your workflow, enhance collaboration, and close the loop with customers that report bug or request features. --- Title: Contact Fernand support Url: https://help.getfernand.com/support/contact-support --- If you have questions, encounter any issues, or need help with using Fernand, we're here to help. There are several ways to get support: ## Email support You can email us anytime at `support@getfernand.com`. We will get back to you within one business day. ### Support tickets You can also submit a support ticket inside your Fernand dashboard. Simply navigate to the "Support" section and fill out the form. Our team will get back to you as soon as possible. 1. Go to your Fernand dashboard. 2. Click on your avatar on the bottom left, and select "Contact us" ## Self-help resources Remember that our knowledge base and documentation can be a helpful resource for many questions. You may find instant answers to your questions there. We're committed to providing top-notch support and ensuring your experience with Fernand is a great one. Don't hesitate to reach out to us. We're always here to help. --- Title: Reply directly from an email notification Url: https://help.getfernand.com/features/reply-directly-from-an-email-notification --- When you receive a notification email from Fernand, such as a new conversation or a reply, you'll notice the "Reply-to" email is something like "reply-{hash}@your-service.fernand-mails.com" or "[note-{hash}@your- service.fernand-mails.com](mailto:note-{hash}@your-service.fernand- mails.com)". Replying to this email will create the appropriate result directly at Fernand. For instance, if the "Reply-to" email starts with "reply-", writing a message here will send a response directly to your customer. Fernand will trim the attached previous message when you reply and include it whenever possible. We support all major mail providers. You can also change the action by renaming the first part : "reply" / "note" by the other, and it will have the desired effect. We gives indication on where your email will land between Reply and Note in the header of the notification email, such as in this case: In this case, you can see that replying to that email will create a note. --- Title: Execute actions directly by replying to an email Url: https://help.getfernand.com/features/execute-actions-directly-by-replying-to-an-email --- When you receive a notification email from Fernand, instead of replying or writing a note, you can also execute specific actions directly, allowing you to treat a conversation faster without having to head to Fernand's app. We support the following commands : * `∕c` or `/close` to close a conversation * `/s` or `/spam` to mark a conversation as spam * `/!s` or `/!spam` to mark a conversation as spam and block the contact * `/a` or `/assign` to assign to someone to your team. When doing so, we expect a second parameter that will be either the email or the beginning of the name of the member you want to assign to. In this case, "**me** " is a specific keyword that will assign the conversation to you. For instance, you can assign to your teammate Richard by doing `/a ri`. That's enough! You can also combine multiple actions by writing them one by line. As long as you start the action with a slash (`/`), you can quickly do multiple actions: ``` /a me /c ``` In case you send an action that is unknown, let's say `/b`, you'll receive an email warning you that your email was ignored because we couldn't understand the requested action. The same applies for when you try to assign a conversation to someone and either make a typo or we can't find them, such as `/assign rihc`. --- Title: Lemon Squeezy integration Url: https://help.getfernand.com/integrations/lemon-squeezy-integration --- Manage transactions directly within the context of support requests with Fernand [Fernand](http://www.getfernand.com) is a modern customer support tool designed for SaaS — It’s fast, modern, and built to be calm, reducing the anxiety of answering support requests. ## How it works After you’ve connected your Lemon Squeezy account to Fernand, you’ll be able to visualize your customer subscription, payments, and their status directly from the context of the customer conversation. This enables you to easily troubleshoot failed payments, incomplete transactions, and provides more insights into customer payment status without switching tabs. ## **How to connect Fernand with Lemon Squeezy** 1. **Sign up on Fernand** You’ll need to have an account on [www.getfernand.com](http://www.getfernand.com). You can sign up for free, and enjoy a trial of 14 days. There is no credit card required. You can connect your Lemon Squeezy account during the trial without any limitations. 2. **Connect Lemon Squeezy** Go to your [settings](https://app.getfernand.com/settings/organization/integrations) (or hit `G then S` ) by clicking on your avatar at the bottom left corner of your Fernand dashboard. From there, select "[Integrations](https://app.getfernand.com/settings/organization/integrations)" on the left navigation. Look for Lemon Squeezy and click on the "**Connect Lemon Squeezy** " button. You’ll be taken to your Lemon Squeezy account and will be prompted to accept the connection. 3. You’re done 🎊 Once the integration is complete, you will be able to see customer payment information populating on Fernand's conversation listing and detail sidebar, directly in context. ## Automate your inbox based on payment and subscription data You can also use Fernand automation rules and smart snippets to act based on the signals from your Lemon Squeezy payment data. For example, you can build a priority support queue for users on a certain plan or auto-respond to free users, telling them it'll take longer to process their requests. 1. **Head over to the rules settings** Head over to Fernand’s [settings](https://app.getfernand.com/settings/organization/rules) page or hit `G then S` and select “[Rules](https://app.getfernand.com/settings/organization/rules)” on the left navigation menu. From there, click on “Add rule” to create a new one. 2. **Select a trigger** You can choose from different triggers that will start the automation. To apply your rule to every new incoming conversation, select "When a **conversation** is **created** ". 3. **Select a condition** At this step, you can refine the conditions under which your rule will be triggered. To automate rules based on your Lemon Squeezy store customer data, you have two options. `Contact is a customer` triggers every time a contact email address matches a customer on Lemon Squeezy. `Contact has plan ($product_name)` triggers every time a contact email address matches a customer with a specific product name on Lemon Squeezy (e.g. “Free”, “Premium”, or “Business”). If necessary, you can create rules for each product you offer to apply different prioritization or automation strategies. 4. **Select an action ** You can select between all the different actions, and even combine them. A powerful way to automate your inbox is to use the auto-reply feature. For example, you can automatically reply to customers on the free plan to let them know that you usually reply a bit slower. Rules can automatically: * Reply with a custom message that can include variables * Send data to a webhook * Tag conversation * Assign to specific agent(s) either normally or in round-robin fashion * Change conversation status ## Disconnecting Fernand If at any time you would like to disconnect Fernand from your Lemon Squeezy store, head to the Integrations page, and you will see an option to disconnect your account. Please note that deleting your organization on Fernand will also disconnect your Lemon Squeezy integration automatically. * * * If you have any questions or run into any issues during the integration process, you can contact [our support](https://www.notion.so/Manage- transactions-directly-within-the-context-of-support-requests-with- Fernand-5483942ee374496bbb71f3a394fc81a0?pvs=21) for assistance. --- Title: How do I sign up for a free trial of Fernand? Url: https://help.getfernand.com/getting-started/how-do-i-sign-up-for-a-free-trial-of-fernand --- To sign up for a free trial of Fernand, simply click on the blue button [“Try for free”](https://app.getfernand.com/create/) to begin your account creation on [getfernand.com](http://getfernand.com) Fill out the form by providing: * Your company’s name * Your work email * Your password And check the box to accept our terms of service and privacy policy. We highly recommend checking the box to receive product news and keep up with updates. We're never sending silly promotions, promised. After filling out the form and checking the box(es), press **Continue**. You will then be prompted to verify and confirm your account by clicking the verification link sent to the work email you provided. Once you validate your email address, you will automatically be signed in and your account will be verified. Your trial period starts from the day you created the account, so make sure to validate your email as soon as possible, and take full advantage of the 14-day trial. --- Title: Bonjour screen Url: https://help.getfernand.com/features/bonjour-screen --- The **Bonjour** screen is your personal assistant when logging into Fernand. It provides a snapshot of your support status, the number of conversations awaiting your response, and the estimated time needed to achieve inbox zero. Think of it as popping by your colleague's desk and asking, "**How is support doing today?** " ## Navigating the screen The Bonjour screen greets you right after logging in, here's how to navigate through it: 1. Look at the **Support Status**. This corner of the screen provides an at-a-glance view of the overall condition of your support efforts. 2. Check out the **Conversation Count**. This tells you the number of conversations that require your attention. 3. Look at the **Estimated time to Inbox Zero**. This is the estimated time needed to respond to all conversations and achieve the oh-so-satisfying inbox zero. ## Making the most of it The Bonjour screen is designed to make your job easier and more efficient. Here are a few tips to get the most out of it: 1. **Start your day by checking the Bonjour screen** This will give you a clear picture of what your day will look like. 2. **Use the conversation count to prioritize your tasks** The higher the number, the more immediate attention it might require. 3. **Use the estimated time to inbox zero as a productivity tool** Set goals based on this estimation, and try to beat the clock each day. ### Bonjour to efficient support By using the Bonjour screen, you’ll be on top of your support status at all times. Never again will you be caught off guard by overflowing inboxes or escalating support issues. It's like having a trusty colleague always ready with an update - an update that can help you conquer your day like a support superstar. --- Title: Rules Url: https://help.getfernand.com/features/features/automation-rules/rules --- One of the most powerful features on Fernand is Rules. This super-charged tool allows users to route conversations or automate actions based on specific conditions. Rules can be found under Settings > Rules and can be triggered whenever a message or an internal note is received or a new conversation is created. ### Understanding condition triggers Conditions are what trigger rules in the first place. These are specific events or states that when met, will cause an action to occur. Here's a list of conditions you can select: * Contact email is... * Channel is... * Message contains... * Has/doesn't have attachments * Message was sent/received * Message language is... * Subject contains... * Message is an automated response * Message is a newsletter * Header contains * Status is * Contact is a customer * Customer has a paid plan (via Stripe, Paddle, or Lemon Squeezy) * Conversation is assigned/not assigned * Business hours * Time is between... * Day of the week is... ### Understanding actions Actions are the consequences of conditions being met. When a condition is satisfied, an action will take place. Here's a list of all the possible actions you can set: * Tag the conversation * Assign to * Round robin assign * Unassign * Notify * Notify assignee * Mark conversation as spam * Snooze conversation * Re-open conversation * Close conversation * Forward message * Insert a reply * Send to a webhook ## Setting up your own rules Setting up Rules in Fernand is a straightforward process. Don't worry; you don't have to be a coding whizz to use this feature! Here's how you can set them up: 1. Navigate to Settings > Rules. 2. Click on "Add rule". 3. Select a **trigger**. 4. Select the **condition** that you want to trigger the rule. 5. Select the **action** that you want to be performed when the condition is met. 6. Click "**Save** " to apply the rule. ## Automation rules examples for SaaS Online software products and services or SaaS (Software as a Service) platforms can greatly benefit from automation rules. They play an integral part in streamlining workflows and optimizing customer service. Let's take a look at some practical automation rule examples you can implement: ### Priority customer service When you're offering a premium service, it's essential to provide priority support. A rule that prioritizes paying customers can expedite the support process. ``` Condition: Customer has paid plan (via Stripe, Paddle or Lemon squeezy)... Action: Assign to 'Priority Support team' ``` ### Handle spam emails Your support inbox is not the place for spam. A rule to mark an automatic response or newsletter as spam can help keep your inbox clean. ``` Condition: Message is an automated response OR Message is a newsletter Action: Mark conversation as spam ``` ### Language-based assignment Having native speakers handle support in their local language can enhance your customer service quality. Create rules that assign conversations to specific agents based on the message language. ``` Condition: Message language is 'Spanish' Action: Assign to 'Support team Spanish' ``` ### After-hours replies Customers appreciate a quick acknowledgment, even outside of business hours. A rule can be created to send an automated reply during out-of-office times promising a reply the next day. ``` Condition: Time is between '18:00-09:00' Action: Insert a reply 'Thanks for reaching out! Our team is currently out of the office, but we'll get back to you first thing tomorrow morning.' ``` These are just a few examples of how you can create automation rules in Fernand. With a robust system like this, the possibilities are virtually limitless. Go ahead and start creating your rules and optimize your SaaS workflows! --- Title: Smart snippets Url: https://help.getfernand.com/features/features/smart-snippets/smart-snippets --- Smart snippets are one of Fernand's powerful features, designed to supercharge your efficiency. Think of them as shortcuts to your most frequent actions. With just a few keystrokes, you can trigger various actions right from your conversation editor view. All you need to do is start typing with a `/` followed by the short name you've assigned to your smart snippet. ### Actions you can perform with Smart snippets * **Tag the conversation** This allows you to add a specific tag to a conversation. Tags are useful for categorizing conversations and making them easier to find later. * **Assign to** This changes the agent responsible for a conversation. You might assign a conversation to a specific team or agent based on their expertise. * **Round robin assign** This assigns conversations evenly among a group of agents. It’s an effective method to distribute the workload fairly. * **Unassign** This revokes the responsibility of an agent from a conversation. The conversation goes back to the general queue and can be assigned anew. * **Notify** This notifies a specific person or team about a conversation. It can be used to draw attention to urgent or important conversations. * **Notify assignee** This sends a notification to the agent assigned to a conversation about updates or messages in that conversation. * **Mark conversation as spam** If you receive an irrelevant message or spam, this action flags the conversation as spam and moves it to the spam folder. * **Snooze conversation** This temporarily removes a conversation from your queue, causing it to reappear after a set amount of time. It's ideal for dealing with issues that cannot be resolved immediately. * **Re-open conversation** If you need to revive a conversation that has been closed, this action reopens the conversation and it returns back to your active queue. * **Close conversation** Once a conversation is resolved, this action closes the conversation and removes it from your active queue. * **Forward message** This sends the entire conversation or a specific message to another email address. It can be used when needing input or action from somebody outside of your usual support team. * **Insert a reply** This lets you use a pre-existing or canned response to reply quickly to a common question. * **Send to a Webhook** This sends the details of the conversation to an external system or application via a webhook. This can trigger actions in other tools, automating your workflows. Each of these actions helps you manage conversations and customer interactions more efficiently and effectively. Remember, you can create Smart snippets for these actions to automate these steps even further! [Example: Posting slack notifications](/features/smart-snippets/posting-slack- notifications-using-smart-snippets) ## Creating your own Smart snippets Creating Smart snippets on Fernand is an easy and straight-forward process. Let's guide you through step by step: 1. Start by selecting the action you want to set as a Smart snippet. This could be any of the aforementioned actions like 'Tag the conversation' or 'Assign to'. 2. Assign a distinct and descriptive name to this action. This will be the name of your Smart snippet. 3. Next, add a short name for the Smart snippet. This will be the keyword used to trigger the Smart snippet within the conversation editor view. It is advised to make the short name intuitive and related to the action for quick recall. 4. In the conversation editor view, type `/` followed by the first few letters of your Smart snippet's short name. Fernand will suggest matching snippets. 5. Select the appropriate Smart snippet from the suggestions. ### Benefits of using Smart snippets Smart snippets speed up your workflow, reduce repetitive actions, and make responding easier. Instead of navigating through menus to fetch a common reply or to assign a conversation, simply use your Smart snippet. Remember, Smart snippets offer limitless possibilities for customization, so don't hesitate to create snippets that suit your work style and productivity needs. --- Title: Smart replies Url: https://help.getfernand.com/features/features/artificial-intelligence/smart-replies --- Smart replies in Fernand help you craft accurate, friendly responses in seconds without starting from scratch. Just hit `Shift+R` or click the magic wand icon in the reply editor to generate a reply based on the current conversation. Behind the scenes, Fernand uses OpenAI’s GPT-4o model, enriched with the knowledge you've passed in your [AI training](/features/artificial- intelligence/ai-training) material . This means the AI can suggest context- aware responses that match your tone, voice, and company specifics, almost like a teammate who's read every ticket you’ve ever answered. ### Example **Customer message** ``` The customer is seeing a 403 error when trying to access their dashboard after upgrading to the Team plan. ``` **Your prompt** ``` Permission issue, need to refresh ``` **Generated reply** ``` Thanks for flagging this! A 403 error usually means there’s a permission issue. After upgrading to Team, it can take a few minutes for roles and access levels to sync. Can you try logging out and back in? If the issue persists, I’ll dig deeper right away. ``` ### Customizing behavior You can tailor how Smart replies behave using the **System prompt setting**. This lets you define tone, structure, and voice using variables like `${agent_firstname}` and `${contact_name}`. Just click the gear icon next to the reply prompt to adjust it. Need help refining your AI setup to sound even more like your team? [Check out the full AI training guide](/features/artificial-intelligence/ai- training) --- Title: Setting up a communication channel Url: https://help.getfernand.com/getting-started/setting-up-a-communication-channel --- Welcome! Let's get your communication channel up and running. Having a dedicated channel helps ensure smooth communication with your customers. Follow the steps in this guide to create your own inbox, set up an email redirect, and configure your DNS records. ### Creating your inbox The first step to establishing your dedicated communication channel is creating an inbox. 1. From the dashboard, navigate to your settings, then to the "Channel" section 2. Click the "**\+ Add channel** " button 3. In the form that appears, fill in the "Name" and "Channel email" fields. The inbox name is how it'll appear on your dashboard and to messages sent to your customers, while the email is where messages for this inbox will be sent. 4. Click "Create a channel" to create your channel ### Setting up an email redirect To create your channel, you will need to set up an email redirect. This will ensure all emails sent to your channel email are forwarded to Fernand. 1. Head over to your email provider's settings page—this may look different depending on your provider 2. Locate the "**Forwarding** " or "**Redirect** " section 3. Enter your channel email in the "**Source** " field, and the Fernand email we provided in the "**Destination** " field 4. Save your settings ### Setting up your DNS records Setting up DNS records helps authenticate your communication, ensuring emails from your inbox reach their destination without getting flagged as spam. You'll need to set up one `TXT` record and two `CNAME` records. #### Setting the TXT record `TXT` records are used for various purposes, including email verification. 1. Go to your DNS provider's page. Find the DNS management section, and click on the option to add a new record 2. Select `TXT` record from the drop-down list 3. In the `Field Name` or `Host` section, usually you can just enter `@` or leave it empty 4. In the `Value` or `Text` section, enter the `TXT` value we provide 5. Save your changes #### Setting the CNAME records `CNAME` records are used to point a subdomain at a different domain name. We'll add two of them: 1. Using the same steps as before, select "`CNAME` record" from the drop-down list 2. Enter the specific subdomains we provide in the `Host` field 3. In the `Value` section, enter the destination hostname we provide 4. Repeat the process for the second `CNAME` record 5. Save your changes With these steps completed, your dedicated communication channel is ready to go! Enjoy seamless, secure communication with your customers. ### Creating your support widget In addition to our email channels, you can set up a support widget on your app, product, website or any property that lets you include custom JS. Our support widget lets visitors or users find their way through your most important links via a customizable, embedded support widget on the bottom right of your page. It also lets them contact you, either via a live chat or contact form interface, and lets them fully browse your knowledge base content without ever leaving your product. To embed our support widget on your site, you need to add this Javascript function to all the pages on which you want it to be shown. We recommend embedding this in the tag towards the end of your page, where your footer code lives, for example. ``` (function (w){if (typeof w.Fernand !== "function") {var f = function () {f.q[arguments[0] == 'set' ? 'unshift' : 'push'](arguments);};f.q = [];w.Fernand = f;}})(window); Fernand('init', { appId: 'your-organization-name' }) ``` For more detailed information on how to setup your support widget, read our [help article](/features/support-widget/setting-up-the-support-widget). --- Title: Inviting team members Url: https://help.getfernand.com/getting-started/inviting-team-members --- At Fernand, we believe customer support is a team effort and shouldn't happen in a silo. Getting your team onboard is an essential step in effective collaboration. You can seamlessly invite team members, assign roles and permissions, and ensure that everyone can contribute in a way that works best for them and your organization. Let's get started! ### Steps to invite team members 1. Go to "**Settings** " on your dashboard 2. Select "**Team** " 3. Enter the email address of the person you want to invite in the "Invite Member" field 4. Click "**Invite** " ### Role selection There are pre-defined roles you can choose from: Administrator, Support agent, and Internal collaborator. These roles have a default set of permissions, but you can customize permissions on an individual basis. ### Granular permissions Our platform allows you to assign or restrict various capabilities for each team member. Here's the list of the permissions you can assign: * **Workspace** Can update workspace details * **Conversation** Can reply to conversations, can create a new conversation, can send an internal note, can assign a conversation, can change the status of a conversation, can tag a conversation, can change the subject of a conversation, can mark the message as spam, can delete a specific message in a conversation, can delete a conversation. * **Recipients** Can add a recipient to the conversation, can remove a recipient from the conversation. * **Smart Snippets** Can add/update/delete a smart snippet or a smart snippet category. * **Channels** Can create or delete a channel. * **Team** Can invite a teammate, can update the role of a teammate, can remove a teammate * **Rules** Can create/update/delete automation rules. * **Contacts** Can update a contact, can block/unblock contacts, can refund payments, can unsubscribe customers from subscriptions. * **Tags** Can add/update/delete tags. * **Knowledge Base** Can update the knowledge base settings, can write/update/delete articles, can create/update/delete a collection. The permissions "Can reply to conversations" and "Can create a new conversation" will set the user as active. **An active user will be billed at $29 per month.** Passive users get in for free! ### Getting started with team collaboration With permissions and roles configured, your team is now set up for collaboration! We hope this guide has been helpful. Remember, you can update these permissions at any time, making our platform flexible and adaptable to your ever-changing business needs. --- Title: Setting up business hours Url: https://help.getfernand.com/getting-started/setting-up-business-hours --- Helping customers understand when they can expect to hear from you is crucial to providing a good user experience. Business hours also enable efficient [automation of rules](/features/rules) linked to these hours. Without defined business hours, we default to considering your business as open 24/7. In this guide, we'll walk you through how to specify your business hours. ### How to set your business hours 1. Navigate to "Settings" in your dashboard. 2. Click on "Business Hours". 3. For each day you're open, click "Add" next to the day and set a "Starting time" and "Ending time". 4. Click "Save" after setting your hours for each day. **Remember, you can set more than one time period per day.** If your business opens in the morning, closes for lunch break, and then opens again in the afternoon, you can set two separate time periods for that day. ### How to delete business hours If your business isn't open on a specific day or time, you can also delete those hours. 1. Go to "Settings" in your dashboard. Click on "Business Hours". 2. Find the day and time period you want to delete. 3. Click the "**Delete** " icon on the right, next to the time period. 4. Click "**Save** " to finalize your changes. Setting your business hours helps manage customer expectations and allows for more effective automation, especially used in conjunction with our smart routing automation feature. Remember, you can always adjust these settings as your business grows or changes. Enjoy making the most of this organizational feature! --- Title: Notification settings Url: https://help.getfernand.com/getting-started/notification-settings --- At Fernand, we're all about keeping you connected to the conversations that matter. Whether you're at your desk or on the go, our notification system ensures you never miss a beat. Let's dive into how you can customize your notification experience to suit your workflow. ## Email notifications Email notifications are perfect for when you're away from your computer but still want to stay updated. Here's how to make the most of them: ### Setting a custom notification email By default, we'll send notifications to the email you used to create your account. But if you'd prefer them to land in a different inbox, no problem! Here's how to set it up: 1. Navigate to "Settings" on your dashboard 2. Select "Account Details" 3. Find the "Notification Email" field and enter your preferred email address 4. Click **Save** to apply the changes ## Browser notifications For those times when you're at your computer, browser notifications are a game-changer. They pop up right on your desktop, ensuring you're always in the know. Here's what you need to know: * Enable push notifications to receive desktop alerts * Works across different devices and browsers * Use the "Test" button to ensure everything's working smoothly ### Troubleshooting browser notifications If you're not receiving browser notifications as expected, here are a few things to check: #### Do not disturb mode Make sure your device isn't in "Do Not Disturb" or "Focus" mode, as this can prevent notifications from appearing. #### Browser permissions Ensure that you've given Fernand permission to send notifications: 1. Click the padlock icon in your browser's address bar 2. Look for "Notifications" in the permissions list 3. Make sure it's set to "Allow" ## Customizing your notification preferences We know one size doesn't fit all, so we've made it super easy to tailor your notification experience. You can choose to receive notifications for: * **A new message is received** Get notified whenever you receive a new message in any of your conversations. * **Activity in anything assigned to you** Be alerted of any developments in tasks or conversations assigned to you. * **Activity in all unassigned conversations** Stay updated on any movement in discussions that are yet to be assigned to a team member. * **A message you sent failed to be delivered** Be informed if any message you sent wasn't successfully delivered. This gives you a chance to retry or troubleshoot as needed. * **You are @mentioned on a comment** You'll be notified anytime someone @mentions your name in a comment. This is particularly useful in ensuring direct communication doesn't get missed. For each of these categories, you can choose to receive notifications via email, browser, or both. It's all about finding the perfect balance for your workflow! ## Optimizing your Fernand experience Customizing your notifications based on relevance can greatly enhance your productivity and ensure that you react quickly to any vital updates. Take a few moments to set up your preferences, and you'll be on your way to a more streamlined, efficient workflow. Remember, we're here to help you stay connected and productive. If you have any questions about setting up your notifications, don't hesitate to reach out to our support team. Happy organizing with Fernand! --- Title: Setting up your knowledge base Url: https://help.getfernand.com/features/knowledge-base/setting-up-your-knowledge-base --- A knowledge base is your customer’s self-service portal for information about your product or service, and Fernand provides an intuitive, Notion-like editor for crafting an informative and user-friendly knowledge base for your SaaS product. ### Getting started You can either migrate from an existing knowledge base, start from a template, or start from scratch. Our white-glove migration service is free, and we support any data source. We'll get back to you with an answer within 48 hours. ### Organizing your articles With Fernand, the organization of your content is a breeze. You can place articles in collections and create an unlimited number of sub-collections. One significant feature is that an article can appear under multiple collections, so you can build content flows that match resolution paths a customer might be looking for. ### Branding your knowledge base Your knowledge base is an extension of your brand. With Fernand, you can customize your knowledge base to align with your company branding. Here’s how: 1. **Upload a logo** You can include both a light mode logo and a dark mode-friendly logo for seamless visual presentation in any screen setting. 2. **Select accent colors** For both light mode and dark mode, specify an accent color that echoes your brand's color theme. 3. **Set a favicon** This small icon will appear on the browser tab when your knowledge base is open, aiding quick recognition. 4. **Add custom links** Customize elements in the header or footer by adding custom links that connect users to other relevant information. 5. **Customize with CSS and JS** For those with coding knowledge or resources, Fernand supports Custom CSS and JS for a fully personalized look and feel. 6. **Adding a custom domain** If you prefer to have your knowledge base accessible through your own custom domain, Fernand allows you to easily set that up. [Set up a custom ](/features/knowledge-base/using-a-custom-domain-for-your-knowledge- basehttps://help.getfernand.com/features/knowledge-base/using-a-custom-domain- for-your-knowledge-base)[domain](/features/knowledge-base/using-a-custom- domain-for-your-knowledge-base). ### Performance Built on NuxtJS, our knowledge base delivers the speed and performance you need, ensuring a smooth and fast user experience for your customers accessing the knowledge base. * * * Setting up a knowledge base with Fernand is a simple and streamlined process, designed to conveniently centralize and organize crucial information. Optimizing your knowledge base will enhance the self-service experience of your customers, reduce the support load on your team, and ultimately raise overall customer satisfaction. --- Title: Using a custom domain for your knowledge base Url: https://help.getfernand.com/features/knowledge-base/using-a-custom-domain-for-your-knowledge-base --- Hi, friend! So, you want to give your knowledge base a unique and personal touch - a very wise move for your branding. We're here to guide you on how to use a custom domain for your knowledge base. Let's get started! ### Setting up your custom domain First and foremost, you'll need to make sure you have your desired domain name registered with a domain provider. Once that's done, follow these steps: 1. Login to your Fernand account. 2. Head over to the 'Settings' menu. 3. Click on the 'Knowledge Base' tab. 4. Locate and click on the 'Domain' section. 5. Enter your registered domain in the 'Custom Domain' field. 6. Press 'Save changes'. ### Configuring your DNS settings To ensure your domain points to your knowledge base, you'll need to update your DNS settings with your domain provider. It’s necessary to add a CNAME record pointing to our service. Below is a generic example. You should check with your domain provider for specific instructions. ``` Type: CNAME Host: yoursubdomain Points to: knowledge.yourcompany.com ``` #### Please be patient One important detail to bear in mind is that DNS changes can take up to 48 hours to propagate across the internet. If your knowledge base doesn't appear immediately at your custom domain, don't panic. The chances are that everything is working perfectly, it just needs a little time. ### Securing your knowledge base Branding is important, but so is security! Once your domain is properly connected, we automatically enforce HTTPS for all traffic to your knowledge base, thanks to our built-in LetsEncrypt integration. That's right, it's one less thing for you to worry about! We hope this guide makes your custom domain setup process a breeze. If you have any hiccups along the way, don't hesitate to reach out. We're here to help. Happy branding! --- Title: Adding custom CSS Url: https://help.getfernand.com/features/knowledge-base/adding-custom-css --- You can tailor your knowledge base with custom CSS. Here's a guide to help you match it to your company’s brand for a more personalized user experience. ### Accessing the feature The first step is to access the custom CSS feature in Fernand's knowledge base generator. Simply follow the steps below: 1. Go to the 'Settings' menu 2. Select the 'Knowledge Base' tab, and switch for "Settings" 3. Look for the ‘Custom CSS’ section ### Adding custom CSS Now that you've reached the Custom CSS section, it's time to customize. You’ll need to write or copy-paste your CSS code into the text field provided. ``` /* Sample CSS code */ body { background: red; } ``` Once your CSS code is in place, click 'Save changes' to apply your new look. **Don't forget to preview your changes** You can access the preview mode via the ‘Preview’ button next to 'Save changes'. ### Resetting your custom CSS If you want to revert to the default design or try something new, you can easily remove your custom CSS. Just delete the CSS code in the text field and select 'Save changes'. We hope this guide helps you in branding your knowledge base. If you have any other queries or encounters any issues, please don't hesitate to reach out. Happy designing! --- Title: Adding custom JS Url: https://help.getfernand.com/features/knowledge-base/adding-custom-js --- You can harness the power of JavaScript to add new features and interactive elements to our knowledge base. We don't limit you in any way. ### How to access the custom JS feature Before we start with the code, let's make sure we're on the right page. Just follow these straightforward steps to access the JS customization area: 1. Log in to your Fernand account. 2. Navigate to the 'Settings' menu. 3. Click on the 'Knowledge Base' tab, and switch to the 'Settings' tab 4. Scroll until you find the ‘Custom JS’ section. ### How to add custom JS Alright, the hardest part is behind us. It's time to roll up our sleeves and dive into some code! Use the provided text field to enter or paste your JavaScript code: ``` //Sample JS code alert("Hello world"); ``` Feeling good about your modifications? Click 'Save changes' to apply your script! ### Previewing and testing your scripts Remember, with great power comes great responsibility. Always preview and test your changes to ensure everything is running smoothly! Use the ‘Preview’ button to see the magic in action. ### Resetting your custom JS If you need a fresh start or just want to get back to basics, erasing your custom JS is a piece of cake. Delete the JS code from the text field and press 'Save changes'. Our team is always thrilled to see what you can build. If you get stuck or have questions, [we're here](https://mailto:support@getfernand.com) to help you every step of the way. --- Title: Embed interactive demos with Supademo Url: https://help.getfernand.com/features/knowledge-base/embed-interactive-demos-with-supademo --- Supademo is a fast-growing platform for creating beautiful, AI-powered interactive demos in seconds. Users simply click through their product flow as if they're screensharing - and Supademo captures each step, click, and transition into a cohesive, interactive experience. We've made sure to provide a seamless experience to embed Supademo demos into Fernand's knowledge base, leveraging our newly released custom `HTML` block. ## Why embed interactive demos? * **Reduce volume of support tickets** With interactive demos, users can troubleshoot and explore on their own, slashing support ticket numbers and giving your team more time to focus on important tasks. It's really the essence of "show, don't tell" ; a recipe that's been proven over and over again. * **Simplify maintenance** Keeping your knowledge base up-to-date can be a real headache, especially with a SaaS product that's always evolving. It often leads to support docs that are more outdated and confusing than helpful. Good news – Supademo is here to cut down your update time by a whopping 90% compared to using text, screenshots, or videos. Just embed a Supademo into Fernand, and you can swap out slides, update screens, add steps, or change text in just a few seconds. And the best part? These changes automatically go live on every Fernand page and embed. It's like magic, but for support teams saving time and effort. Easy peasy! * **Measure effectiveness** Supademo gives you access to analytics, so you get to know how many times a specific walk-through guide or feature tour was visualized, along with drop- off rates on specific steps so you know where to improve. ## Does this work on mobile, too? You bet! 🎉 These types of iframe embeds are difficult because they don't naturally stretch to every aspect ratio, like a Youtube video would. Since you are showing a screen recording, the aspect ratio has to be preserved throughout. We've made extra sure that our layout was not colliding with Supademo and was resizing perfectly at every screen size. ## Can I try this for free? Yes, Supademo has a free plan that allows you to [record up to 5 demos for free](https://supademo.com/pricing), still granting you full editing capacity, and no catch. If you want to remove their branding and access other advanced features, you'll have to upgrade to their Pro plan, priced at $24/seat/mo. [Get Supademo for free](https://app.supademo.com/signup) --- Title: Paddle Billing integration Url: https://help.getfernand.com/integrations/paddle-billing-integration --- Manage transactions directly within the context of support requests with Fernand [Fernand](http://www.getfernand.com) is a modern customer support tool designed for SaaS — It’s fast, modern, and built to be calm, reducing the anxiety of answering support requests. ## How it works After you’ve connected your [Paddle Billing](https://www.paddle.com/billing) account to Fernand, you’ll be able to visualize your customer subscription, payments, and their status directly from the context of the customer conversation. This enables you to easily troubleshoot failed payments, incomplete transactions, and provides more insights into customer payment status without switching tabs. **Paddle Billing support only** As of today, we only support Paddle Billing. Paddle Classic doesn't provide the sufficient technical backbone for a deep, native integration with Fernand. ## **How to connect Fernand with Paddle** 1. **Sign up on Fernand** You’ll need to have an account on [www.getfernand.com](http://www.getfernand.com). You can sign up for free, and enjoy a trial of 14 days. There is no credit card required. You can connect your Paddle Billing account during the trial without any limitations. 2. **Connect Paddle** Go to your [settings](https://app.getfernand.com/settings/organization/integrations) (or hit `G then S` ) by clicking on your avatar at the bottom left corner of your Fernand dashboard. From there, select "[Integrations](https://app.getfernand.com/settings/organization/integrations)" on the left navigation. Look for Paddle Billing and click on the "**Connect Paddle** " button. 3. You'll be prompted to enter your Paddle API Key. You can find this by logging in to Paddle → Developer Tools → Authentication. [Detailed instructions](https://developer.paddle.com/api-reference/about/authentication#get-an-api-key). 4. Paste your API Key, hit "Connect to Paddle", and you’re done 🎊 Once the integration is complete, you will be able to see customer payment information populating on Fernand's conversation listing and detail sidebar, directly in context. ## Automate your inbox based on payment and subscription data You can also use Fernand automation rules and smart snippets to act based on the signals from your Paddle Billing payment data. For example, you can build a priority support queue for users on a certain plan or auto-respond to free users, telling them it'll take longer to process their requests. 1. **Head over to the rules settings** Head over to Fernand’s [settings](https://app.getfernand.com/settings/organization/rules) page or hit `G then S` and select “[Rules](https://app.getfernand.com/settings/organization/rules)” on the left navigation menu. From there, click on “Add rule” to create a new one. 2. **Select a trigger** You can choose from different triggers that will start the automation. To apply your rule to every new incoming conversation, select "When a **conversation** is **created** ". 3. **Select a condition** At this step, you can refine the conditions under which your rule will be triggered. To automate rules based on your Paddle Billing store customer data, you have two options. `Contact is a customer` triggers every time a contact email address matches a customer on Paddle. `Contact has plan ($product_name)` triggers every time a contact email address matches a customer with a specific product name on Paddle (e.g. “Free”, “Premium”, or “Business”). If necessary, you can create rules for each product you offer to apply different prioritization or automation strategies. 4. **Select an action ** You can select between all the different actions, and even combine them. A powerful way to automate your inbox is to use the auto-reply feature. For example, you can automatically reply to customers on the free plan to let them know that you usually reply a bit slower. Rules can automatically: * Reply with a custom message that can include variables * Send data to a webhook * Tag conversation * Assign to specific agent(s) either normally or in round-robin fashion * Change conversation status ## Disconnecting Fernand If at any time you would like to disconnect Fernand from your Paddle account, head to the Integrations page, click the Fernand Settings button, and you will see an option to disconnect your account. Please note that deleting your organization on Fernand will also disconnect your Paddle integration automatically. * * * If you have any questions or run into any issues during the integration process, you can contact [our support](https://www.notion.so/Manage- transactions-directly-within-the-context-of-support-requests-with- Fernand-5483942ee374496bbb71f3a394fc81a0?pvs=21) for assistance. --- Title: Track knowledge base analytics with Plausible Url: https://help.getfernand.com/features/knowledge-base/track-knowledge-base-analytics-with-plausible --- [Plausible Analytics](https://plausible.io/) is an open source project dedicated to making web analytics more privacy-friendly. Plausible is intuitive, lightweight and open source web analytics. No cookies and fully compliant with GDPR, CCPA and PECR. It's made and hosted in the EU, and powered by European-owned cloud infrastructure. It's possible to track your knowledge base visits and performance with Plausible seamlessly by following the guide below. 1. Add a new website on [Plausible.io](http://Plausible.io) Make sure you set your knowledge base URL as `Domain` 2. Head over to Fernand's settings → Knowledge Base → Custom JS section 3. Paste the code below, making sure to replace `help.yourdomain.com` by your custom help center URL. ``` var script = document.createElement('script'); script.type = 'text/javascript'; script.src = 'https://plausible.io/js/script.js'; script.dataset.domain = ’help.yourdomain.com’ script.defer = true; document.getElementsByTagName('head')[0].appendChild(script); ``` --- Title: Unauthenticated users Url: https://help.getfernand.com/features/support-widget/unauthenticated-users --- Our support widget can handle unauthenticated users. A common use case for unauthenticated user is happening when you place the support widget on a page that's publicly available, like your landing page. In that scenario, you don't have any information about this user you could [pass on](/features/support- widget/authenticating-users) with the initiation of the support widget. Unauthenticated users are those who have not been authenticated using Fernand's secret hash and just provided their Name and Email address as contact data. This data is not verified, which is why we advise our users to treat incoming requests from unauthenticated users with caution. Once a user replies to a thread from their email address, the conversation will change status and become verified. Additionally, you are also able to [authenticate the user](/features/support-widget/authenticating-users) by passing extra information on the widget. --- Title: Custom links icon reference Url: https://help.getfernand.com/features/support-widget/custom-links-icon-reference --- We provide a handful of icons that you can use when adding custom links to your support widget. To embed a custom link on your support widget, just pass the following parameters to your JS embed code. ``` links: [ { icon: 'guides', title: 'Read our guides', url: 'https://help.getfernand.com' }, { ... } ] ``` This is an array element, meaning you can add as many links as you want. If you don't specify an `icon` parameter, your custom link will automatically fall back to the `link` icon. ### Supported icons * link * apps * bell * bento * bug * calendar * call * chat * code * contact * user * download * guides * video * heart * inbox * lock * facebook * discord * telegram * git * twitch * hashtag * network **Missing something?** We can probably accommodate your request. [Contact us](https://mailto:support@getfernand.com) to request an icon. --- Title: Setting up the support widget Url: https://help.getfernand.com/features/support-widget/setting-up-the-support-widget --- In addition to our email channels, you can set up a support widget on your app, product, website or any property that you include custom JS. Our support widget lets your visitors or users find their way through your most important links via a customizable, embedded support widget showing on the bottom right of your page. It also let them contact you, either via a live chat or contact form interface, and let them fully browse your knowledge base content without ever leaving your product. To embed our support widget on your site, you need to add this Javascript function to all the pages you want it to be shown on. We recommend to embed this in the tag towards the end of your page, where your footer code lives, for example. ``` (function (w){if (typeof w.Fernand !== "function") {var f = function () {f.q[arguments[0] == 'set' ? 'unshift' : 'push'](arguments);};f.q = [];w.Fernand = f;}})(window); Fernand('init', { appId: 'your-organization-name' }) ``` Let's unpack what's happening here: The first line of code setup the `Fernand` function that you will be able to call to command the widget and its parameters. The second line initialize the widget with one required parameter, `appId`. The appId is the name of your organization used inside Fernand. You can find it in your URL when logging in on Fernand (e.g. → your `appId` is `piedpiper`) You will initiate the widget with `Fernand('init', { appId: 'piedpiper' });` ## Settings You can customize the widget by passing or updating a few parameters. You can do this by calling the `set` method. When you call `Fernand('init', {...})` at the beginning, the second parameter is passed to `Fernand('set', {...})`. So the following: ``` Fernand('init', { appId: 'piedpiper', show: true, open: false }) ``` Is a shortcut for the same as ``` Fernand('set', { appId: 'piedpiper', show: true, open: false }) Fernand('init') ``` ### Authenticating users By default, Fernand's widget doesn't know the identity of the users interacting in widget. If you are dealing with logged in users, you can pass the "user" parameter to authenticate them. ``` Fernand('set', { user: { name: 'Richard', email: 'richard@piedpiper.com' } }) ``` We recommend that you add a verification hash to make sure that malicious actors don't impersonate your users. Learn more on [authenticating logged in users](/features/support-widget/authenticating-users). ### List of settings We support a wide array of options and settings to make the widget more personalized, and infused with your brand guideline. * `appId` String — **Required** This is the name of organization at Fernand, as indicated in the URL. * `container` String — Optional, defaults to `document.body` A CSS selector that will be used to inject the widget in it. Defaults to the document.body. * `show` Boolean — Optional, defaults to `true` Will define if the widget is visible at the bottom right, or hidden * `open` Boolean — defaults to `false` If set to true, will open the widget automatically on page load. Note that if the user opens the widget and refresh the page, the widget will still memorize its state and re-open automatically. * `orgName` String By default, our widget will display your organization's name as the widget's title, but you can override it by setting this value to anything you prefer. This is particularly helpful if you don't want to expose your legal entity name to your clients (e.g. PiedPiper LLC → Pied Piper) * `orgDescription` String or Object (for [multi language support](/features/support- widget/translations-in-the-widget)) By default, this value is set to "Hey! How can we help?" and is displayed right under your organization name when opening the widget, but you can customize it too. * `user` Object — defaults to `null` Used to identify your user. The object expect `name`, `email` and eventually `hash`. You can learn more about hashing at [Authenticating Users](/features/support-widget/authenticating-users). * `channel` String — Optional value. Allows you to set the channel's email the new conversations (in both contact and chat) will be created. If not set, it will fallback to the default channel you set on your app settings. * `sound` Boolean — defaults to `true` Emits a sound when the user receives a new message. You can disable it if you prefer. * `theme` String — defaults to `null` Define which color theme to use, between "dark" and "light." If you leave it undefined, the widget will use the user's system preferences. * `tabs` Array — defaults to `['home', 'chat', 'articles']` You can set which tabs are active on the widget. Possible values: * `home` Displays the homepage of the widget with your custom links * `chat` Conversation experience with a chat UX * `articles` Let users browse your knowledge base * `contact` A basic contact form * `defaultTab` String — defaults to `home` You can force the display of a tab other than 'home', like "Chat" or "Articles," by default when the user opens the widget. * `position` String — defaults to `right` By default, the widget will be displayed on the right, but you can set the "position" to the following other values: * `left` Displays the widget on the left side of the viewport * `behavior` String — defaults to `default` * `default` Display the widget as a popup on top of the icon. * `modal` Displays the widget in the center as a modal. You can also set the `hideIcon` property to `true` if you want to implement your own custom launcher. * `sidepanel` Displays the widget as a panel on the right side of the page. If you also pass `position` to `left`, it will display the panel on the left side of the page. * `customPrompt` String — defaults to `'Hi, how can we help?'` or Object (for [multi language support](/features/support-widget/translations-in-the-widget)) When the user creates a new conversation, you can choose which custom message prompt it displays. For instance, we recommend something like "We are happy to help! Reporting a bug? Please consider recording reproduction steps using [https://jam.dev](https://jam.dev/) \- it helps us a ton!". * `customIdentPrompt` String — defaults to `'Thank you! We got your message but feel free to add anything'` or Object (for [multi language support](/features/support- widget/translations-in-the-widget)) This is the message that will be displayed after the user has provided their email and name. We avoid repeating the same message as `customPrompt` to avoid giving the feeling to the user that their original message wasn't saved. * `links` Array This is an array of custom links that will be visible in the home tab. You can link to your status page, roadmap, calendar booking app, etc... (Supports [multi-language](/features/support-widget/translations-in-the- widget) titles) * `hideIcon` Boolean — defaults to `false` When set to true, the icon that shows the chat widget won't be displayed. It can be useful to set to true if you only want to open the widget on custom actions for instance. * `labels` Object Allows you to change the label of each sections in the footer of the widget. Here are their keys and their default values: * `home`: "Home" * `chat`: "Chat" * `articles`: "Articles" * `contact`: "Contact Us" This allows you to update the labels of any sections, for example: `labels: { home: 'Welcome', articles: 'Knowledge' }` (Supports [multi-language](/features/support-widget/translations-in-the- widget) titles) * `tags` Object Allows you to define which tags to apply on new conversations for both the keys "`chat`" and "`contact`". Value for each keys (chat, contact) is an Array of string that are the related tags you want to apply. _Note that only existing tags will be applied. New ones will be ignored._ Example: `tags: {chat: ['Chat', 'Support'], contact: ['Contact Form']}` * `accentColor` String — defaults to `#00a0ff` (blue) Changes the background color of the widget launcher bubble to better integrate with your design. This will also applies to the links, buttons, and all accent color elements inside the widget. * `iconColor` String — defaults to `#ffffff` (white) Changes the message buble icon color that you see inside the widget launcher. * `showTeamMembers` Boolean - defaults to `true` Show or hide the team members avatars on the home of the widget. * `aiAgentName` String — defaults to "`Operator`" Name to display for the AI agent. We highly recommend to clearly indicate it's an AI agent. Replacing it by a standard name could confuse your users. * `chatAvailability` String — defaults to `always` Accepts either "always" or "business-hours". When set to "business-hours", the chat will show a warning outside of the business hours, indicating to your user when you'll be back next. * `defaultChatTabBehavior` String — defaults to `auto` How the widget will behave when clicking on the "Chat" tab in the widget. Here are the possible values: * "`auto`" - Open a new conversation if there are no conversations. Select the conversation if there is only one. Shows the list of conversations otherwise. * "`latest`" - Show the latest conversation automatically, even though there are more than one conversations available. * "`new`" - Always show the "new conversation" thread. If there are many conversations available, a "back" button is always present to allow users to view the list. * "`list`" - Always show the list of conversations, except if there are no conversations at all, in which case a new conversation will be displayed. * `responseTime` Number — defaults to `24` Delay in hours displayed in the chat when outside of business hours. The message displayed is "Expect a response within {responseTime} business hours, even if we're usually a little quicker than that" * `language` String — defaults to "`en`". Possible values are `auto` `fr` `de` `nl` `it` `es` `pt` `pl` `sv` `dk` `tr` Defines the language of the widget. We load the `en` strings by default, but you can either set "`auto`" to let the browser decide or set another fixed language. Note that you can also extend the language, adding your own, by extending the `window.fernandTranslations` object, specifying your language (ISO 639-1, such as `fr`) as the key. You can read more on our dedicated page: [Translations in the widget](/features/support-widget/translations-in-the-widget). * `suggestedArticles` Array — Optional. If not set, will list the top 5 rated articles from your Knowledge base. You can provide a list of articles slug present in your knowledge base and they will appear on the "home" tab of your chat widget. ### Links structure The `links` parameter is an array of objects that contain four properties: * `icon` String — defaults to 'link' A predefined icon name from [our set](/features/support-widget/custom-links- icon-reference). We provide a few icons that you can choose from. * `title` String or Object (for [multi language support](/features/support- widget/translations-in-the-widget)) The text displayed for the link * `url` String The URL where to redirect the user to. If the URL hostname is the same as where the widget is, the page will open in the same tab, except if the `target` property is set to "_blank". * `target` String By defaults, lets the widget select what action to take on redirect: If the hostname of the redirect is the same as the current page, the redirect is made in that same page. Otherwise, or if `target` is set to `_blank`, a new tab is opened. For the `url` parameter, you can also set the following values to manipulate internal linking within the widget: * `@chat` will open the Chat tab * `@article` will open the Articles tab * `@article:slug-of-an-article` will open a specific article in the Articles tab. ## Functions Once the widget has been initiated, you can trigger some actions by calling `Fernand(...)`. Here are the list of actions you can do: * `Fernand('init', {...})` Initialize the widget. This can only be done once. * `Fernand('set', {...})` Set the settings for the widget. * `Fernand('show')` Will show the widget's icon * `Fernand('hide')` Will hide the widget's icon. If the widget is also open, it will close it first. * `Fernand('open')` Opens the widget in full. You can pass a second parameter which is the name of the tab you want to open (defaults to "home"), and a third in case of "articles", that is the slug of the article you want to open. * `Fernand('close')` Closes the widget * `Fernand('toggle')` Toggle between opening/closing the widget * `Fernand('clear')` Will clear the session of the currently connected user, including their chat messages, without destroying the widget. Useful when you want to connect another user. * `Fernand('destroy')` Destroy the widget, removing all HTML data and events listeners. * `Fernand('on', eventName, callback, once)` Add an event listener to [events triggered by Fernand's widget](/features/support-widget/setting-up-the-support-widget#list-of-events- you-can-listen-to), and will call the `callback`. You can pass the boolean `once` to trigger it one time or everytime. * `Fernand('off', eventName, callback)` Removes the event listener added previously ### List of events you can listen to Here's a list of events that will be triggered depending on the activity of the widget: * `show` When the "show" event is triggered * `shown` When the widget is fully shown * `hide` When the "hide" event is triggered * `hidden` When the widget is fully hidden * `open` When the "open" event is triggered * `opened` When the widget is fully open * `close` When the "close" event is triggered * `closed` When the widget is fully closed * `message` When a new message is received * `destroyed` When the widget is destroyed ### Checking the current state of the widget You can query the current state of the widget to know if it is shown, hidden, open or not by calling `await Fernand('is', state)`. `state` can be either: * `shown`: The widget is visible * `hidden`: The widget is not visible * `open`: The widget is visible and open * `closed`: The widget is not open This allows you to handle your code accordingly to a custom state you might expect the widget to be in. --- Title: Authenticating users Url: https://help.getfernand.com/features/support-widget/authenticating-users --- By default, Fernand's widget doesn't know the identity of the users interacting in widget. If you are dealing with logged in users, you can pass the "user" parameter to authenticate them. ``` Fernand('set', { user: { name: 'Richard', email: 'richard@piedpiper.com' } }) ``` In this scenario, whenever the user opens a new chat session, they won't be asked to provide their email or their name. They will be automatically identified, and all their previous conversations linked to Fernand, either via chat or email, listed in the Messages view. To prevent bad actors from impersonating your users and passing any email to our widget through Javascript, we rely on the HMAC+SHA256 algorithm. You can sign and hash the user email, and pass it as the `hash` parameter using the secret key available in your Fernand's dashboard. When receiving the hash, we'll hash the email you provided with the same key and compare the resulting hash with the one you provided. If they match, we'll consider the email valid and verified. We consider that you took the necessary steps to validate your user's email, so make sure your users can't impersonate anyone by simply signing up with any email address and not having to verify their account. ## Finding your secret key You can find your secret key in Fernand's dashboard, under **Settings** → **Channels** → **Chat** , and then scrolling down to the **Preferences** section, switching to the **Authentication** tab. ## Hashing an email To hash an email, you will need to use the HMAC+SHA256 mechanism. We provide an example in Python, which is easily implemented, but you can do the same in all major programming languages. ### In Python ``` import hmac, hashlib hmac_digest = hmac.new( key='6fdc0085d97cc621edcc0333fd93ef220f0eb1ce'.encode(), msg='richard@piedpiper.com'.encode(), digestmod=hashlib.sha256 ).hexdigest() print(hmac_digest) # fc3cf30c76a8b5c1c875b79c53a36bd8e2d653a1ec00c11fff538583ef759244 ``` ### In Javascript ``` export const encode_hmac_sha256 = async (secret:string, message:string) => { let enc = newTextEncoder() let algorithm = { name: 'HMAC', hash:'SHA-256' } let key = await crypto.subtle.importKey('raw', enc.encode(secret), algorithm, false, ['sign', 'verify']) let signature = await crypto.subtle.sign(algorithm.name, key, enc.encode(message)) const hashArray = Array.from(newUint8Array(signature)) const digest = hashArray.map((b) => b.toString(16).padStart(2, '0')).join('') return digest } ``` **This hashing should be done server-side** Be careful not to put your key on the frontend of your application. If a visitor can access the key, they will be able to hash any email and impersonate other users. Then, you can add this hash into the user's object like the following code example: ``` Fernand('set', { user: { name: 'Richard', email: 'richard@piedpiper.com', hash: 'fc3cf30c76a8b5c1c875b79c53a36bd8e2d653a1ec00c11fff538583ef759244' } }) ``` Be careful that the hash is **case sensitive**. If you hash with an email having uppercase letters, but set the "`email`" property in lower case, the hashes won't match. ### Need help setting this up? We appreciate this is a bit technical and could be a source of questions. If anything is unclear, please feel free to reach out at [support@getfernand.com](https://mailto:support@getfernand.com) or.. on the widget in the bottom right, and we'll be right with you 🙂 --- Title: Importing Intercom conversations Url: https://help.getfernand.com/getting-started/importing-intercom-conversations --- Intercom offers a way to export all your conversations with their attachments into an Amazon S3 storage. This allows us to get your data from Intercom and import them on Fernand easily. The first step we need to do is create a dedicated S3 bucket for your account. Please contact us and we'll setup a S3 bucket for your account, that you'll then be able to use for exporting your intercom data. Please contact us and we will create a dedicated S3 bucket to export your Intercom data to. Once the S3 bucket ready, you can initiate the export following these steps, using Intercom's [Data exporter](https://www.intercom.com/help/en/articles/7029721-export- conversations-data-to-amazon-s3): 1. First, connect to your Intercom account at then head to Settings > {Organization} DATA > Data export 2. Click "**New data export** " 3. In the "Configuration" tab, you'll see three sections. Fill them with the following information. **Data Objects** Select "Conversations", with the the type "JSON" and disable "Include attachments": 4. **Destination** Select "Amazon S3". In the "Amazon S3 bucket details", enter the name we have created to you. 5. Leave the "Folder name" part empty, we don't use it. 6. In "Folder sorting method", you select "No folders". Enable "Skip empty exports when no data has changed" to avoid creating empty files. You can then ignore the "Set up CloudFormation stack" as our stack is already set-up. 7. **Schedule** In the schedule export, you can select hourly if you still receive messages. That way, we'll import them as soon as they arrive and you will have an almost synced Fernand app with Intercom. 8. Then, hit "Start data export" at the top right of the page: 9. A confirmation email will be sent to you to validate that you are authorized to initiate a data export. Click on it to confirm. 10. Now, in the "Runs" tab, you'll see your export running. Once it's completed, our system will automatically import the data onto your account. --- Title: Add the Fernand widget to your knowledge base Url: https://help.getfernand.com/features/knowledge-base/add-the-fernand-widget-to-your-knowledge-base --- We've made things simple for you to display our widget on your knowledge base. All you have to do is pass the `fernandSettings` to the Javascript object in your knowledge base Custom Javascript settings and our knowledge base will pick up the settings and load the widget. You can copy & paste the following code snippet, change the `appId` parameter to your Organization's one, and your support widget will show up on the bottom right of your screen. It's that simple 🙂 ``` window.fernandSettings = { appId: 'CHANGE-THAT' } ``` Note that the "Articles" tab will be disabled by default, since your user is already browsing your knowledge base. You can pass every parameter and option we have listed on the [support widget setup guide](/features/support- widget/setting-up-the-support-widget) (position, behavior, theme, etc..) --- Title: Why is an SPF record not required? Url: https://help.getfernand.com/getting-started/why-is-an-spf-record-not-required --- You might have noticed it: when you add a new email channel on Fernand, we only ask for two `CNAME` and a `TXT` record. The `TXT` and one of the two `CNAMEs` roles are to sign the email sent using `DKIM`. They ensure that the content is proved to come from you. In case your domain enforce `DMARC`, this will pass the verification since the signing domain is the same as the sender. Now, `SPF` is used to ensure that the sending server is indeed allowed to send an email from your domain. Imagine your domain being **example.com**. When the sending server sends an email, it uses a "Return Path" email, which is a specific email that can vary from the real sender email you would find in the "From:" field. It is that specific Return Path email that the SPF checks against. What we do at Fernand is to not use the same From, but use one from a subdomain we ask you to setup: the second `CNAME` DNS entry (often called `fbounces`). This one points to a `SPF` record that includes the servers we use to send emails from. When we send an email, we use a return path that does not ends with [@example](https://t.me/example).com but with [@fbounces](https://t.me/fbounces).[example.com](https://example.com/), which then contains the appropriate `SPF` we need to properly deliver your conversations properly. --- Title: Translations in the widget Url: https://help.getfernand.com/features/support-widget/translations-in-the-widget --- Our widget is set to use English `en` strings by default. To use the default user language based on the browser preferences, you need to set the `language: 'auto'` parameter when initializing the widget. Our support widget comes with a few translations available. As of now, we support the following languages: * French `fr` * German `de` * Dutch `nl` * Italian `it` * Spanish `es` * Portuguese `pt` * Polish `pl` * Swedish `sv` * Danish `dk` * Turkish `tr` If you want to participate, you can submit a new language by updating the following file: You can also review the translations at if you spot any mistakes. All the static words in our widget have been translated, but we cannot anticipate and translate the custom text you set in the following parameters: * `orgDescription` * `customPrompt` * `customIdentPrompt` * `labels.home` / `labels.chat` / `labels.articles` / `labels.contact` * `links[].title` For all of these, instead of a string, you can pass an object with the language as the key - defined by two letters (ISO 639-1) - and the translated string as the text. In this case, the language "en" is required. For example: ``` Fernand('init', { appId: 'your-slug', orgDescription: { en: 'Hey! Do you need help?', fr: 'Salut! Besoin d\'aide?', de: 'Hallo! Brauchst du Hilfe?' } }) ``` --- Title: Google Workspace Url: https://help.getfernand.com/getting-started/email-provider-setup-guides/google-workspace --- Google Workspace advanced mail routing can be used to redirect messages received by your organization's email addresses to your Fernand channel. 1. Open [Google Admin Console](https://admin.google.com/) and log in with your admin account. 2. Go to **Apps** > **Google Workspace** > **Gmail** , and select **Default routing**. 3. Click **Configure** 4. In the **Specify envelope recipients to match** section, select **Single recipient** and add: `support@piedpiper.com` 5. Scroll down to the **Envelope Recipient** option, select **Change envelope recipient** and input your Fernand forwarding address in the **Replace recipient** field `support@piedpiper.fernand-mails.com` 6. Scroll to the bottom and make sure the setting under the **Options** section is set to: **Perform this action on non-recognized and recognized addresses**. 7. Click **Save** to apply this routing rule. 8. **Send a test email** to `support@piedpiper.com` to confirm you receive messages properly on your new Fernand inbox. ### **Tips** * **Custom Filters:** You can further customize the routing rule by adding filters for specific sender addresses, subject lines, or other criteria. * **Security:** Ensure that sensitive information is handled securely when setting up email redirects. The Google spam filter can be fairly aggressive. If it determines an email is spam, that email will not be forwarded in to Fernand. For more detailed information and troubleshooting, you can refer to the official Google Workspace support documentation [here](https://support.google.com/a/answer/10486484?hl=en). ### Need help? If this all feels a bit much, no worries: we’ve got you. You can [book a free call](https://www.cal.eu/antoineminoux/fernand-demo) and we’ll walk through it with you, step by step. **This setup is a one-time thing** Once your email channel is live and authenticated, you’re all set to start sending and receiving support emails from Fernand. No further setup is needed. --- Title: Contact form custom fields Url: https://help.getfernand.com/features/support-widget/contact-form-custom-fields --- You can customize the contact form in your support widget to add more fields and hide or set default values to the `subject` and `message` fields. Since setting up a custom contact form depends on user actions, you cannot set these extra fields by default when initiating the widget. Custom fields can only be specified when displaying the form: ``` Fernand('open', 'contact', { ... }) ``` ## Parameters Here are the root parameters you can define: * `tags` Array of string List of tags applied to new conversations via the contact form. Useful for automatic message handling and identifying requests from the contact form. * `fields` Array of Object A list of fields that will appear after your user's name and email. Please note that these fields are automatically hidden when your [user is properly authenticated](/features/support-widget/authenticating-users). * `values` Object An object containing the value pre-filled for each field of the form. This includes the default fields such as `name`, `email`, etc. ### Fields specification Each field object in the `fields` array should include the following parameters: * `type` String Type of field. We currently accept `text`, `email`, `number`, `tel`, `select`, `textarea`, `checkbox`, `file` and `hidden`. * `name` String Unique name of the field. * `label` String (or object for each language) Text displayed before the field. Supports Markdown and translations by passing an object with language-specific labels. If you want to specify a translation for the label, pass an object instead of the string, such as ``` label: { "en": "Your email address", "fr": "Votre adresse email", "de": "Deine E-Mail-Adresse" } ``` * `placeholder` String (or object for each language) Text inside the field when applicable. Supports translations similar to `label`. * `required` Boolean If true, the field must be filled out by the user. * `accept` String For the `file` type. Defines the type of files accepted, such as ".png,.gif,.jpg" * `multiple` Boolean For the `file` type. Indicates if the user can select one (default, false) or multiple files (if set to true) * `options` Array of Objects For `select` type only. Contains `value` and `label` for dropdown options. ``` options: [ { value: '100-499', label: '$100 - $499' }, { value: '500-999', label: '$500 - $999' }, { value: '1000-4999', label: '$1,000 - $4,999' }, { value: '5000-9999', label: '$5,000 - $9,999' }, { value: '10000+', label: '$10,000 and above' } ] ``` ## Example Here's an example that you can re-use as a starting point. This is the contact form for an enterprise pricing request, something fairly common in SaaS. ``` Fernand('open', 'contact', { tags: ['Enterprise request'], values: { name: 'John Doe', email: 'john@doe.com', subject: 'Enterprise request' }, fields: [ { name: 'subject', label: 'Subject', type: 'hidden', // Will hide the Subject field with the default value }, { name: 'message', type: 'hidden', // won't ask for a message }, { name: 'company', label: 'Company/Organization', required: false, placeholder: 'Your company name', type: 'text' }, { name: 'role', label: 'Role/Position', required: false, type: 'text' }, { name: 'budget', label: 'Estimated budget', required: true, placeholder: 'Your estimated monthly budget', type: 'select', options: [ { value: '100-499', label: '$100 - $499' }, { value: '500-999', label: '$500 - $999' }, { value: '1000-4999', label: '$1,000 - $4,999' }, { value: '5000-9999', label: '$5,000 - $9,999' }, { value: '10000+', label: '$10,000 and above' } ] }, { name: 'notes', label: 'Notes', required: false, placeholder: 'Any additional notes or questions you have for us', type: 'textarea' }, { name: 'terms', required: true, type: 'checkbox', label: 'I agree to the [terms and conditions](https://piedpiper.com/terms)' } ] }) ``` By customizing the contact form with additional fields and pre-filled values, you can collect more relevant information from your users. Use the provided parameters and examples as a starting point to tailor the form to your specific needs. --- Title: Automatically closing inactive conversations after some time Url: https://help.getfernand.com/features/automation-rules/automatically-closing-inactive-conversations-after-some-time --- Streamline your customer service workflow by automatically closing inactive conversations. This guide will show you how to set up a time-based rule in Fernand that closes conversations after a specified period of customer inactivity. ## Setting up the rule 1. Go to Settings > Rules, and create a new Rule 2. Pick a title for your rule, like "Auto-close Inactive Conversations" 3. Configure trigger conditions **When...** `A message` `was not received within` `1 day` You can customize the time by specifying anything you need in natural language (e.g. 30 minutes, 6 hours, 20 days, 3 weeks, etc...) 4. Configure actions `Mark the conversation as done for now` Your setup should look something like this: Make sure to save the rule, and it will be ready. You will receive a success notification the first time the rule is successfully activated. By implementing this automated rule, you'll significantly enhance your team's productivity and maintain a clean, manageable conversation queue. All conversations that haven't received a response for one day will be automatically closed. --- Title: Setting up a Split Inbox Url: https://help.getfernand.com/features/setting-up-a-split-inbox --- Splits are customizable sections of your inbox that allow you to organize conversations based on specific criteria. Think of them as smart folders that automatically sort your incoming messages, helping you prioritize and focus on what matters most. ## Your inbox, your way Split inboxes are customized on a per-user basis, not organization-wide. This means you have the flexibility to create and manage split inboxes that cater to your individual workflow and preferences, which may differ from those of your teammates. For instance, you might set up a split inbox for high-priority clients you personally manage, while your teammate could have a split for technical support inquiries they specialize in. * **Increased efficiency** Process similar requests together, reducing mental load and context switching. * **Better prioritization** Create splits for urgent issues, VIP customers, or specific product lines. * **Team coordination** Assign splits to different team members based on expertise, language knowledge, or workload. ## Managing splits Hit `⌘+K` or `CTRL+K` to open our command palette, and select `Configure split inboxes`. Alternatively, you can click on the `…` icon on the top right of the inbox page. You will have access to three inboxes: Inbox, Waiting for Answer, and All Conversations. This is the opinionated default we chose to help you increase focus and fly through your support inbox. You can re-order split inboxes by using the drag handle on the left. ### Primary inbox The first inbox will always be considered your "Primary inbox". Think of it as your personal conversation to-do list. Your goal is to empty it by the end of each session. Here's how you can process each conversation: 1. **Respond and Resolve** Address the inquiry comprehensively and mark as done. 2. **Delegate** Assign to the best-suited team member. 3. **Defer** Snooze for later if more information is needed or it's not time-sensitive. As you clear it, you'll be getting closer to a satisfying inbox-zero experience. It's your path to a calm, productive workday. ## Creating a split inbox Split inboxes are managed through filters, meaning we'll list conversations that match the filters you set. To get started, click on `+ New split inbox` — this will open a new modal prompting you to set your matching filters. From this, set a name for your inbox (e.g., "Urgent Issues", "VIP Customers", or "Product Feedback") and click on `+ Add action` to select a filter. For now, we support the following filters: * **Status is** * Open * Done * Snoozed * Marked as spam * **Assigned to** * Assigned to me * Assigned to me or no one * Unassigned * Assigned to {{agent}} * **Contact email is ...** * Specific email * Domain catch all * **Channel is ...** * Specific channel (e.g. sales@domain.com) * **Subject contains ...** * Keyword * **Message contains ...** * Keyword * **Message source is ...** * Email * Chat * **Message language is ...** * **Contact is a customer** * **Tagged with** **Can't find the filter you need?** You can use automation rules and tag the conversations you need that match your use case, and then use the tag filter to create your split inbox. Splits are more than just an organizational tool - they're a strategic asset in delivering exceptional customer support. By thoughtfully implementing splits, you'll create a more responsive, efficient, and satisfying experience for both your team and your customers. --- Title: Tracking issues resolution Url: https://help.getfernand.com/features/tracking-issues-resolution --- This nifty little system tag is here to revolutionize how you track and measure your customer support conversations on Fernand. Let's dive into why we've made this a permanent addition to your toolkit and how it can supercharge your support operations. ## Benefits of using the resolution tag Go beyond just marking conversations as 'Done'. This tag helps you track when you've genuinely resolved the customer's core issue. * **Consistency across teams** With a system tag, everyone's on the same page. No more confusion about which tag to use or how to track resolutions. * **Accurate reporting** By making it a system tag, we ensure that your resolution data is always reliable and comparable across time periods. Understand how quickly your team is resolving issues at their root. * **Future-proofing** We've got big plans for this feature, including some awesome reporting features coming down the pipeline. By establishing it as a system tag now, we're setting the stage for these future enhancements. While we're working on bringing you detailed resolution time reports, this tag is already laying the groundwork for that feature. Stay tuned! ### Marking as done vs. Resolving: What's the difference? Marking a conversation done isn't the same as resolving it. When you mark a conversation as 'Done', you're essentially saying, "I've processed this for now." It's a quick way to achieve inbox zero and keep your workflow tidy. When you tag a conversation as `Resolved`, that's your way of declaring, "This issue is well and truly sorted!". While closing helps you manage your daily workload, the `Resolution` tag ensures you're tracking the complete customer journey. ## How to use Here's how to make the most of this feature: 1. When you've fully resolved a customer's issue (not just replied), hit the `V` key. This closes the conversation and add the `Resolution` tag. Want to go even faster? Hit `⌘+SHIFT+V` to mark Resolved, close, and automatically move to the next conversation 2. Create a [split inbox](/features/setting-up-a-split-inbox) to keep track of unresolved conversations. 3. Leverage our [Rules](/features/rules) feature to automatically add the tag when a customer goes quiet for a few days. ## Best practices To get the most out of this new process, we encourage you to keep these tips in mind: * **Be consistent** Encourage your whole team to use the tag consistently. * **Don't rush** Only use the tag when you're confident the core issue is resolved. * **Review regularly** Use the split inbox feature to check for long-standing unresolved issues. * **Automate wisely** Set up Rules to add the tag, but review these conversations to ensure true resolution. The conversation resolution tag is your new secret weapon for top-notch customer support. While optional to use, we highly recommend making it a part of your organization workflow. It's designed to make your life easier by empowering you to always close the loop with your customers. --- Title: Getting started with custom data Url: https://help.getfernand.com/features/custom-data/getting-started-with-custom-data --- Custom data is a powerful feature that allows you to fetch information from an API endpoint and display it in your conversation sidebar. This means you can bring in relevant data from your systems to enhance customer interactions. ## Getting started Ready to supercharge your conversations with custom data? Let's dive in! 1. Navigate to the `Custom Data` section in your settings 2. **Enter your API endpoint URL** (e.g., https://api.example.com/v1/admin/account) In the "Custom data" section, you'll see a field to enter your API endpoint. This is where the magic happens! Make sure to use a secure (https) URL that returns the data you want to display. Learn more about how to [structure your endpoint](/features/custom-data/structuring-your-endpoint). 3. **Add any necessary headers** Need to add some extra security? No problem! Click on "Add headers" to include any necessary authorization tokens or custom headers. This ensures that your API knows it's you making the request. ``` Authorization: Bearer 1234567890abcdef ``` A basic authorization is simply a "`Authorization`" header with a value of "Bearer {hash}". `{hash}` is a base64 encoded string of your username and password, joined with a ":". For instance "alice:1234" will become "Bearer 1234567890abcdef" Note that since we have to re-use the headers to connect to your endpoint, we can not store them as an irreversible hash, which means there is a non-null risk that data could be leaked. So we recommend you to use keys that are unique to Fernand to reduce the risk. 4. **Test your connection with a valid customer email** Time to take your custom data for a spin! Enter a valid customer email in the "Testing contact email" field. **Important:** This email needs to match a customer in the endpoint you're working with. Otherwise, you might not see any data. 5. **Preview the rendered data or check the**`JSON`**response** Once you've entered a valid email, hit the "Fetch" button. You'll see two tabs: **Preview:** This shows you how the data will look in your conversation sidebar. It's a great way to make sure everything's displaying correctly. **JSON Response:** For the tech-savvy folks, this tab shows you the raw data returned by your API. Useful for troubleshooting or if you want to get into the nitty-gritty details. ## Customizing your display Want to make your custom data look just right? You can use HTML to structure the display along with liquid template tags to display your data. Here's a quick example of what you can do: ``` Customer Details Name{{customer.name}} Email{{customer.email}} Plan{{customer.plan}} ``` This will create a nicely formatted display of customer information in your sidebar. Feel free to get creative and make it your own! * [Text](/features/custom-data/text) * [Key/Value pair](/features/custom-data/key-value-pair) * [List](/features/custom-data/list) * [Button](/features/custom-data/button) * [Spacer](/features/custom-data/spacer) * [Badge](/features/custom-data/badge) * [Pill](/features/custom-data/pill) * [Card](/features/custom-data/card) * [ Tabs](/features/custom-data/tabs) * [Collapsible](/features/custom-data/collapsible) * [Divider](/features/custom-data/divider) * [Table](/features/custom-data/table) * [Form](/features/custom-data/form) [Component list documentation](https://app.getfernand.com/features/custom- data) ## Editing data In addition to displaying custom data, Fernand also provides the capability to edit data seamlessly. This allows you to change values for various input types, including text input fields, select fields, radio buttons, checkboxes, and more. In a form, use the `action` and `method` parameters to specify the way you want to send back. Within a button, use the `data-url` and `data- method` parameters. #### Security and headers To ensure secure communication between Fernand and your server, it is crucial to include appropriate headers with each request. This way, your server can verify the authenticity of the request and maintain a secure environment for editing data. ## Dark mode support We've carefully crafted every element of our components library to big dark- mode friendly as well. As long as you stick to defined components, they will be working both in light and dark mode. If you want to target dark-mode only, inject custom `CSS` and prefix your component with the `body.dark-mode` class. ## Troubleshooting Running into issues? Don't sweat it! Here are a few common problems and how to solve them: * **No data showing up?** Double-check that your test email matches a customer in your system. * **Getting an error?** Make sure your API endpoint is correct and your headers are properly set. * **Data looks weird?** Review your HTML structure and make sure you're referencing the correct fields from your API response. Still stuck? Don't hesitate to reach out to our support team. We're always here to help you make the most of your custom data! --- Title: Text Url: https://help.getfernand.com/features/custom-data/text --- Text components are the building blocks of your content, helping you create clear, structured, and visually appealing information for your users. Let's dive into each component and see how you can make your text shine. ### Headings Headings are the signposts of your content, guiding users through your information hierarchy. We offer six levels of headings, from h1 to h6. ``` Your main title goes here Important section heading Subsection title Minor heading Even smaller heading The smallest heading ``` Remember, use headings in order and don't skip levels. It's not just about looks—it's about creating a logical structure that's easy for users to understand. #### Best practices for headings * Although we do provide h1, the sidebar sections are titled starting at h2 * Structure your content with h2 and h3 for main sections and subsections * Use h4-h6 sparingly for deeper content organization * Keep headings concise and descriptive. We recommend using sentence case. ### Paragraphs Paragraphs are the workhorses of your content. They carry the bulk of your information and ideas. You can include liquid variables inside them. ``` Your paragraph text goes here. Fetch data using {{ liquid_variables }} ``` ### Links Use links to link out to external sites, admin internal tools, or pre- formatted queries. ``` Click here for more information ``` Consider using the `target="_blank"` attribute for links that open in a new tab ### Code and pre-formatted text When you need to display code snippets or preserve specific formatting, use the `` and `` tags: ``` function greet(name) { console.log(`Hello, ${name}!`); } greet('World'); ``` This will render as: ``` function greet(name) { console.log(`Hello, ${name}!`); } greet('World'); ``` #### Tips for code blocks * Consider adding a copy button for longer code snippets * For inline code, just use the `` tag without `` ### Badges and pills Badges and pills are great for highlighting status, categories, or other short pieces of information. They add a pop of color and draw attention to important details. ``` New Featured ``` You can customize the appearance with additional classes: ``` Success Warning Error ``` For a deep dive into all the possibilities with badges and pills, check out our articles on [badges](/features/custom-data/badge) and [pills](/features/custom-data/pill). --- Title: List Url: https://help.getfernand.com/features/custom-data/list --- The **List component** allows you to display items in either ordered (``) or unordered (``) lists. This is especially useful for dynamically rendering sets of data, like domains, invoices, statuses, or other collections from your API. Using the _for each_ loop, you can easily generate list items based on the data you retrieve from custom endpoints. ### Unordered lists Unordered lists use bullet points to organize information and are defined using the `` tag. Below is an example of how you can create an unordered list of domains with color-coded pills to indicate their active status. ``` {% for item in domains['items'] %} {{ item.domain }} {% endfor %} ``` In this example, the `for` loop iterates through the `domains.items` object, to retrieve the list of domains. Each domain is wrapped in a list item (``) and displayed with a `` containing the **pill** class. The pill color changes depending on the `item.active` value, where active domains are green and inactive domains are red. ### Ordered lists If you need a numbered list, you can use the `` tag to create an ordered list. Here’s an example of an ordered list that displays items such as statuses or priority levels: ``` {% for item in statuses['items'] %} {{ item.status_name }} {% endfor %} ``` In this case, the `for` loop fetches `statuses` and lists them in numbered order. Each `` contains the status name, but you can further customize this with additional HTML or CSS classes. ### Customizing lists Fernand’s List component is highly flexible, and you can apply different classes, styles, and dynamic data to match your needs. Here are some additional ideas for customizing your lists: * Add badges or icons to each `` item for extra context * Use the `if` condition inside the loop to show or hide specific list items By leveraging the power of loops and conditions, you can create dynamic, data- driven lists that automatically update based on your API’s responses. --- Title: Button Url: https://help.getfernand.com/features/custom-data/button --- Buttons are the interactive powerhouses of your UI. Use them to map action, make choices, and navigate your app. We have two ways to create buttons: #### 1\. Button element ``` Standard Button Submit Form ``` #### 2\. Anchor tag as button ``` Admin panel ``` Use the anchor tag when your "button" needs to link to another page. Otherwise, stick with the `` element. ### Disabled button Buttons can have different states to indicate their current status: ``` Can't click me ``` ### Button aspect You can add classes to indicate specific visual treatment. We currently support `ghost`, `warning` and `danger` both in light and dark mode. ### Copying values to clipboard To add copy functionality to any element, simply add the `data-copy` attribute with the value you want to copy. When clicked, the text will be automatically copied to the user's clipboard. #### Basic example ``` Copy ``` ### Best practices for buttons 1. Use clear, action-oriented text (e.g., "Save Changes" instead of "OK") 2. Use color and contrast to make important buttons stand out using the `ghost`, `warning` and `danger` classes 3. Maintain adequate spacing between buttons to prevent accidental clicks --- Title: Card Url: https://help.getfernand.com/features/custom-data/card --- The **Card component** is used to create a boxed section around content with a white background and padding. Cards are ideal for grouping related information, making it visually distinct from the surrounding content. ### Basic card example To create a card, simply wrap your content inside a `` element with the class `card`. Here’s a basic example: ``` This is content inside a card. ``` This will render a white box with 20px padding around the text, helping it stand out on the page. ### Using cards with other components Cards can be combined with other components, such as lists, forms, or tables, to group related content together. Here’s an example of a card containing a list of items: ``` Item 1 Item 2 Item 3 ``` In this example, the card wraps the list, making it visually distinct from the rest of the page. ### Cards with headings You can also add headings inside a card to provide context for the content it contains. Here’s an example of a card with a heading and paragraph: ``` Card Title This is some information inside the card. ``` This layout makes the content more structured and readable, especially when displaying grouped data or sections on the page. --- Title: Divider Url: https://help.getfernand.com/features/custom-data/divider --- The divider element is a straightforward yet effective way to separate content within your layout. By using a simple `` tag, you can create a visual break that enhances readability and organization of your custom data panel. ### Using the divider element Incorporating a divider into your content is as easy as adding an `` tag. Here’s an example: ``` This is some content above the divider. This is some content below the divider. ``` In this example, the horizontal rule clearly separates the two paragraphs, making it easier for users to distinguish between different sections of content. You can also use the [spacer](/features/custom-data/spacer) component to create a visual hierarchy. --- Title: Spacer Url: https://help.getfernand.com/features/custom-data/spacer --- The **Spacer component** is a simple tool to add vertical spacing between elements. It helps to create clean and well-organized layouts by inserting customizable blank space without resorting to the `margin` property. ### Basic spacer The default spacer adds a 12px height between elements. To use the default spacer, simply include an empty `div` with the `spacer` class: ``` ``` This will insert a 12px space between components, such as lists, buttons, or cards. ### Custom spacer sizes Fernand offers several predefined spacer sizes to fit different layout needs. You can use these spacer classes to create more or less vertical space: * `spacer--xs` for `4px` spacing * `spacer--s` for `8px` spacing * `spacer--m` for `16px` spacing * `spacer--l` for `24px` spacing * `spacer--xl` for `32px` spacing * `spacer--xxl` for `48px` spacing Use the modifier class in combination with the regular `spacer` class. ``` ``` This example would add `32px` of vertical space between elements. You can also use the [divider component](/features/custom-data/divider) to create a visual hierarchy. --- Title: Badge Url: https://help.getfernand.com/features/custom-data/badge --- The **Badge component** allows you to display small, attention-grabbing labels that provide additional context to items such as statuses, counts, or categories. ### Basic badge example To create a basic badge, use the `` element with the `badge` class. Here’s a simple example: ``` New ``` This will render a small badge with the label "New." By default, badges use neutral styling, but you can apply additional classes to change their appearance. ### Pill-style badge For a color-coded badge, you can add the `pill` class. This will give the badge a little color dot in front to represent its status. You can use the [pill notation](/features/custom-data/pill) to set different colors. ``` Default ``` ### Combining badges with other elements Badges can be combined with other UI components, such as buttons, lists, or cards, to provide additional information in a clear and compact way. Here’s an example of a badge being used with a button to show the number of new notifications: ``` Notifications 3 ``` This setup shows a button with a blue badge indicating the number of new notifications, enhancing the user interface by providing key information directly on the button. --- Title: Pill Url: https://help.getfernand.com/features/custom-data/pill --- The **Pill component** is a great way to visually represent the status, category, or type of an item with a small, color-coded label. Pills are typically used to draw attention to key information in a clear and concise manner. You can easily integrate them into your custom data, such as within list items, to show dynamic status updates. ### Basic pill example A pill can be created using a `` element with the class `pill`. By default, it appears as a simple rounded label. Here’s a basic example: ``` Label ``` This will render a pill with the text "Label". To make pills more useful, you’ll likely want to add colors and other dynamic properties. ### Dynamic pill for status Using Liquid's `if` statement, you can create dynamic pills that reflect the current status or condition of an item. Here’s an example that shows how you can display different pill colors based on the `active` status of a domain: ``` {{ item.domain }} ``` In this example: * The pill will be **green** if `item.active` is `true` * The pill will be **red** if `item.active` is `false` The pill class changes dynamically based on the value of `item.active`, allowing for a visual representation of the domain’s status. You can extend this logic to handle other types of statuses as well. ### Custom pill colors Fernand also supports additional pill color options to represent different states. You can use the following color classes to customize your pills: * `pill--green` for success or active status * `pill--orange` for warning or pending status * `pill--red` for error or inactive status Here’s an example of using various colored pills: ``` Inactive Active Warning Error ``` ### Combining pills with other components Pills can be combined with other components, such as lists, tables, or cards, to add more clarity and context. Here’s an example of pills being used inside a table to display priority levels: ``` Ticket Priority Ticket #123 High Ticket #124 Low ``` By combining pills with other elements, you can enhance the UI of your support tickets, dashboards, or customer profiles, giving users clear, color-coded context at a glance. --- Title: Table Url: https://help.getfernand.com/features/custom-data/table --- The **Table component** allows you to display structured data in rows and columns. Tables are especially useful for displaying sets of data like users, domains, or statuses in an organized way. ### Basic table To create a table in Fernand, use the standard HTML `` element wrapped inside a ``. Here’s a simple table structure with a header and some rows: ``` Name Email Status Alice alice@example.com Active Bob bob@example.com Inactive ``` This will generate a simple table displaying user information, neatly contained within the `table__control` class. ### Using tables with Liquid In Fernand, you can leverage Liquid to dynamically populate your tables with data retrieved from APIs. Here’s an example that loops through a list of users and populates the table: ``` Name Email Status {% for user in users.get('items') %} {{ user.name }} {{ user.email }} {% if user.active == true %}Active{% else %}Inactive{% endif %} {% endfor %} ``` This example uses a _for each_ loop to iterate over a list of users. For each user, it displays their name, email, and status. Conditional logic is applied to show the status with a green badge for active users and a red badge for inactive users. ### Handling empty tables Sometimes, your data set may be empty. To handle this, you can use conditional statements in Liquid to display a message if no data is available: ``` Name Email Status {% if users.get('items') | size == 0 %} No users found. {% else %} {% for user in users.get('items') %} {{ user.name }} {{ user.email }} {% if user.active == true %}Active{% else %}Inactive{% endif %} {% endfor %} {% endif %} ``` This example checks if there are any users before displaying the table. If no users are found, it shows a message saying, "No users found." --- Title: Form Url: https://help.getfernand.com/features/custom-data/form --- The form element is essential for collecting user input in a structured and interactive manner. By using forms, you can create a seamless experience for users to submit data, whether it’s feedback, inquiries, or other types of information. ### Using the form element Creating a form involves wrapping your input fields within the `` tag. Here’s a simple example: ``` Name Email Message ``` In this example, the form contains fields for a user's name, email, and message. Each field is labeled for clarity, and the form is set to submit data via a POST request to the specified action URL. ### Validating form input To ensure data quality, you can include validation attributes in your input fields, such as `required` or `pattern`. For example: ``` ``` In this case, the email field is marked as required and must match a basic email format pattern before submission. ### Handling form submissions Upon submission, the form data is sent to the specified action URL. You can process this data on the server side to perform various actions, such as sending emails, storing data in a database, or integrating with other services. You can use the `action` and `method` parameters to specify the way you want to send data back. ### Sending data back to your server When using forms in conjunction with Fernand, you can send additional headers alongside your form submission. If you’ve defined headers like `X-Fernand-Key` in your endpoint settings, they will be included in the request. This helps maintain a secure and consistent environment for handling data. ### Summary The form element is a powerful tool for user interaction, allowing you to collect valuable input efficiently. By incorporating proper validation and handling techniques, you can enhance the user experience and ensure that the data collected meets your application's requirements. --- Title: Key/value pair Url: https://help.getfernand.com/features/custom-data/key-value-pair --- Key/value pairs are essential for displaying structured data in a clear and organized manner. ### Using key/value pairs To display key/value pairs, you can use an unordered list with the `` structure. Each list item can contain multiple spans for labels, values, and buttons. Here’s an example: ``` Created Date {{ created }} View Details Status {{ status }} ``` This code snippet creates a list of key/value pairs, where each item has a label (e.g., "Created Date") followed by its value (e.g., the date) and an optional button for further actions. You can use a `` tag is used to emphasize important information, like the status of an item. ### Looping through key/value pairs You can dynamically generate key/value pairs using Liquid by iterating over a list of items. Here’s how you can do that: ``` {% for item in items %} {{ item.label }} Action {% endfor %} ``` In this example, a loop is used to iterate over a collection of `items`. Each item's label and created date are displayed, along with an action button. This approach keeps your code clean and allows for easy updates when your data changes. --- Title: Displaying your data using Liquid Url: https://help.getfernand.com/features/custom-data/displaying-your-data-using-liquid --- Liquid is a powerful templating language that lets you retrieve and display dynamic data in Fernand. You can use Liquid to pull data from external sources, display it in your components, and even apply logic like conditional statements or _for each_ loops. ### Retrieving and displaying data To retrieve and display data using Liquid, you'll often use variables from API responses or data models. Here’s a simple example of displaying a variable: ``` Created on {{ created }} ``` In this example, the `{{ created }}` variable displays the date an object was created. Liquid automatically outputs the value when the template is rendered. In the backend, we rely on a simplified version of Jinja2 (the Liquid-style template engine). You can have some insights on how to structure your HTML at the [Template Designer](https://jinja.palletsprojects.com/en/stable/templates/) page from Jinja2. (Note that all import system has been disabled to avoid security issues.) ### Component library We have designed a component library to help you quickly get an interface to display your data up and running in no time. * [Text](/features/custom-data/text) * [Key/Value pair](/features/custom-data/key-value-pair) * [List](/features/custom-data/list) * [Button](/features/custom-data/button) * [Badge](/features/custom-data/badge) * [Pill](/features/custom-data/pill) * [Card](/features/custom-data/card) * [Divider](/features/custom-data/divider) * [Spacer](/features/custom-data/spacer) * [Table](/features/custom-data/table) * [Form](/features/custom-data/form) ### Using conditional statements Conditional statements in Liquid allow you to show or hide content based on conditions. For example, you can check if a value is true or false, or compare values. Here’s an example: ``` {% if user.active %} User is active {% else %} User is inactive {% endif %} ``` This code checks if `user.active` is true. If so, it displays "User is active." Otherwise, it displays "User is inactive." ### Creating "for each" loops Loops in Liquid let you iterate over a list of items, such as an array of domains or a collection of users. This is useful when displaying a list of data dynamically. Here’s an example using a _for each_ loop: ``` {% for item in domains['items'] %} {{ item.domain }} {% endfor %} ``` In this example, Liquid loops over a list of domains. For each `item`, it checks if the domain is active and applies a green pill if true, or a red pill if false. This is a great way to visually indicate status within a list of items. Why a difference between `domains.items` and `domains['items']` ? Since `domains` is a dictionnary, it has reserved keywords. `items` is one of them, so in this case, when calling `domains.items`, you don't call the child object, but the reserved keyword, which causes an error when rendering your template. Here's the list of reserved keyword for a dictionnary: * clear * copy * fromkeys * get * items * keys * pop * popitem * setdefault * update * values ### Handling nested data Liquid also supports accessing nested data. For example, if you have a nested object, you can access its properties like this: ``` Domain owner: {{ domain.owner.name }} ``` In this case, `{{ domain.owner.name }}` would output the name of the owner of the domain. ### Combining logic with display Liquid allows you to combine logic and data display seamlessly. For instance, you can create a table with conditional formatting based on values: ``` Domain Status {% for item in domains.get('items') %} {{ item.domain }} {% if item.active %} Active {% else %} Inctive {% endif %} {% endfor %} ``` Here, Liquid loops through the domains, displaying each domain and its status in a table. The status column uses conditional logic to display a green badge for active domains and a red badge for inactive ones. --- Title: Structuring your endpoint Url: https://help.getfernand.com/features/custom-data/structuring-your-endpoint --- To display custom details, we need to load them from your server. This is done by sending a POST request to the URL you provide in your Custom Data settings. ### Securing your endpoint We highly recommend adding headers to secure access to that endpoint specifically for Fernand. You can either: * Add an `Authorization` header with a custom value (like Basic authentication). * Use a special key, such as `X-Fernand-Key`, which will be sent to your server. On your server's end, you will need to compare the received value to ensure the query is truly coming from Fernand and permit returning data accordingly. ### POST request details When you open a conversation, Fernand sends a `POST` request to your endpoint using the defined settings. The `POST` request will contain a `JSON` body with the following items: * `email` Email of the main contact of the conversation. * `conversation_id` ID of the conversation in Fernand, useful for tracking or integrating with our API. * `subject` Subject of the conversation. * `agent` Current agent's email requesting the data, helpful for logging access and actions performed via the custom data. * `contacts` An array containing a list of emails, including the main contact's email. This can be useful if the main recipient is not in your database but another recipient is. ### Response requirements Your server must return a JSON response that will be injected into our template engine to render the HTML using your data. Additionally, ensure your server returns a response within **3 seconds** to maintain a seamless user experience. Your server must return a response under 3 seconds. ### Sending data back to your server Your template can include actions in the form of buttons or forms. When adding a `data-url` parameter to your button, all the headers defined in your settings will be sent along with the request. In a form, use the `action` and `method` parameters to specify the way you want to send back. For example, if you have defined an `X-Fernand-Key` in your endpoint settings, the same header will be sent when the button is clicked. This ensures that your endpoint remains dedicated to handling custom data from Fernand within a secure environment. --- Title: Executing actions on your endpoint Url: https://help.getfernand.com/features/custom-data/executing-actions-on-your-endpoint --- Want to make your custom data more interactive? You can add input fields, textareas and action buttons that let your agents perform tasks directly from Fernand. These actions send requests to your server, making it easy to manage user data without leaving the interface. **Before you start** For security reasons, action requests can only be sent to endpoints that share the same domain as your custom data endpoint. For example, if you load user data from `https://api.yoursite.com/users/details`, you can only send actions to `api.yoursite.com` ## Adding action buttons ### Simple button Need a straightforward action like deleting a user account? Use a simple button! Here's how: ``` Delete this account ``` Required attributes: * `data-url`: Where to send the request (must match your data endpoint domain) * `data-method`: Optional, defaults to POST. Accepts POST, PUT, PATCH, and DELETE ### Using forms Need to collect multiple pieces of data? Forms are your friend! They use standard HTML form attributes. ``` ``` ## Working with checkboxes Checkboxes in Fernand are smart. They can handle both single confirmations and multiple selections. ### Single confirmation ``` ``` This generates: `{"agree": true}` when checked, `false` when unchecked. ### Multiple selection ``` ``` This generates: `{"options": ["A", "B"]}` when both are selected, or an empty array if none are selected. ## Handling requests When an agent triggers an action, here's what your server receives: * `agent` Email of the agent performing the action * `conversation_id` Fernand conversation ID * `subject` Conversation subject * `contact` Primary contact email * `data` Form data (if using a form) Success is any 2xx response, and requests timeout after 3 seconds. ## Managing permissions Only agents with the "Execute" role can perform actions. Want to hide specific parts of your HTML template from unauthorized users? Use the `{% if can_execute %}` conditional statement. ``` {% if can_execute %} Do something {% endif %} ``` --- Title: Mindful reporting Url: https://help.getfernand.com/features/reporting/mindful-reporting --- At Fernand, we believe in the power of mindful reporting. While data and metrics are crucial tools for understanding your support operations, they're just one piece of a much larger puzzle. Numbers can illuminate patterns, but they don't tell the whole story of your customer interactions or your team's dedication. ## The human side of metrics Support isn't a numbers game. It's about real people helping real people. When an agent spends an extra 20 minutes on a conversation because a customer needed more explanation, that's not inefficiency – that's empathy. When someone has a lower ticket count because they're mentoring new team members, that's not underperformance – that's leadership. ### Beyond the dashboard Raw numbers can be misleading without context. Here's what they don't show: * The complexity of each conversation * The quality of solutions provided * The emotional intelligence required * The customer satisfaction beyond mere resolution * The knowledge sharing happening between team members ## Creating a balanced perspective Instead of using metrics as a tool for judgment, use them as a springboard for meaningful conversations. Here's how to approach your reporting dashboard with mindfulness: 1. Look at trends, not isolated numbers 2. Consider external factors that might impact performance 3. Use data to identify areas where your team might need more support 4. Celebrate improvement, not just high scores 5. Remember that behind every metric is a human interaction ### Supporting your support team Your support metrics shouldn't create anxiety or foster unhealthy competition. They should inspire collaboration and growth. When reviewing performance data, ask yourself: ``` 💡 "What can we learn from this?" Rather than "Who's performing below target?" ``` ### Practical tips for mindful metrics Here are some ways to maintain perspective when looking at your reporting dashboard: * Review metrics in team discussions where context can be shared * Pair quantitative data with qualitative feedback * Look for patterns that might indicate systemic issues rather than individual performance * Use metrics to celebrate team wins and identify learning opportunities ## Building a sustainable support culture The best support teams aren't built on numbers alone – they're built on trust, learning, and genuine care for customers. Your reporting dashboard is a tool to help you serve customers better, not a scorecard for judgment. Use it wisely, and always remember: behind every ticket is a human story worth understanding. --- Title: Posting Slack notifications using smart snippets Url: https://help.getfernand.com/features/smart-snippets/posting-slack-notifications-using-smart-snippets --- Fernand's smart snippet feature makes it easy to quickly communicate critical information to your team through Slack. By setting up an incoming webhook, you can automatically send important alerts and updates directly to a Slack channel of your choice. ### Set up a Slack Incoming Webhook To get started, you'll need to create a new incoming webhook integration in Slack: 1. Log in to your Slack workspace and navigate to the [Slack API page](https://api.slack.com/apps). 2. Click `Create New App` and select `From Scratch`. 3. Give your app a name and select the Slack workspace you want to add it to. 4. In the left-hand menu, click `Incoming Webhooks` and toggle the setting to `On`. 5. Click `Add New Webhook to Workspace` and select the channel you want to post messages to. 6. Copy the Webhook URL provided - you'll need this to set up the integration with Fernand. ### Connect Your Slack Webhook to Fernand Now that you have your Slack webhook URL, you can easily connect it to Fernand's smart snippet feature: 1. In Fernand, create a new smart snippet and select "Send to a Webhook" as the action. 2. Select `POST` method, and paste the Webhook URL you copied earlier into the URL field. 3. Customize the JSON payload to include the information you want to send to Slack. For example: `{` `"text": "${contact_name} reported a critical bug\n*${subject}*\n"` `}` 4. Save your smart snippet and you're all set! Whenever you activate this smart snippet, Fernand will automatically send an alert to your Slack channel. #### Tips * You can use the `${contact_name}`, `${subject}` and `${url}` variables to dynamically populate the Slack message with relevant details from Fernand. * You can add additional actions to your smart snippet like adding a tag, notifying someone, or snoozing the conversation for later. * Choose an appropriate emoji to visually indicate the severity or importance of the alert. With Fernand's smart snippet feature and Slack incoming webhooks, you can streamline your team's communication and stay on top of critical issues quickly and efficiently. --- Title: Installing Fernand on your phone Url: https://help.getfernand.com/getting-started/installing-fernand-on-your-phone --- Fernand is a progressive web app, which means you can install it on your mobile device just like a regular app. This works seamlessly on both iOS and Android devices, allowing you to access Fernand's features right from your home screen, and get push notifications for important activity events that require timely responses like new chat requests. ### Installing on iOS To install Fernand as a progressive web app on your iOS device: 1. Open Fernand in your Safari browser 2. Tap the share icon (the square with an upward-pointing arrow) 3. Scroll down and tap `Add to Home Screen` 4. Give the app a name like `Fernand` and tap `Add` to install it ### Installing on Android To install Fernand as a progressive web app on your Android device: 1. Open Fernand in your Chrome browser 2. Tap the menu icon (the three dots in the top right) 3. Select `Add to Home screen` 4. Give the app a name like `Fernand` and tap `Add` to install it ## Enabling push notifications Fernand can send you push notifications through your web browser, keeping you up-to-date on important activity in your conversations. You can set push notifications for these type of events: * A new email conversation is received * A new chat conversation is received * Activity in anything assigned to you * Activity in all unassigned conversations * A message you sent failed to be delivered * You are @mentioned on a comment 1. Open the Notifications settings in Fernand 2. Toggle on the `Browser` option 3. Select the types of activity you want to receive notifications for, such as new messages, mentions, or assignment updates 4. Click `Save` to apply your notification preferences With Fernand installed as a progressive web app and browser notifications enabled, you'll have instant access to your conversations and stay on top of important updates no matter where you are. --- Title: Deep linking to articles from your app Url: https://help.getfernand.com/features/support-widget/deep-linking-to-articles-from-your-app --- Keep your users in the flow by showing them the right help content exactly when and where they need it. With Fernand's deep linking feature, you can create contextual help that appears right within your app without sending users to external documentation or support sites! ### Linking to an article Adding deep links to your support widget is as simple as including a data attribute. 1. Find your article's slug in the article editor sidebar or from the URL of your article 2. Add the `data-fernand-article="your-article-slug"` attribute to your `` link attribute 3. Set the value, here with the placeholder `your-article-slug` to your article's slug. You find this on the article editor right sidebar, under the field `URL slug` Here's a basic example: ``` Read our guide on how to deep link to articles ``` ### Linking to a collection Want to direct users to a particular collection of articles? You can use the `data-fernand-collection` attribute to specify a collection path. Make sure you start the path with a forward slash Here's a basic example: ``` Support widget documentation ``` ### Best practices for deep linking * Place help triggers near potentially confusing features or steps in your user journey * Use deep links in error messages to provide immediate guidance on how to resolve issues * Add contextual help in complex forms or during important workflows to prevent user frustration * You can automatically open the widget without having the user click on a link by calling the `Fernand('open')` JS function * When using `data-fernand-collection`, remember to start the path with a forward slash --- Title: Installing the widget on a React app Url: https://help.getfernand.com/features/support-widget/installing-the-widget-on-a-react-app --- Installing the Fernand widget in your React application is straightforward. We'll guide you through creating a dedicated component that handles the widget initialization and configuration. ### Creating the widget component First, create a new file called `FernandWidget.js` in your components directory and add the following code: ``` import { useEffect } from 'react'; const FernandWidget = ({ appId, config = {} }) => { useEffect(() => { if (typeof window !== 'undefined') { window.Fernand = function() { window.Fernand.q = window.Fernand.q || []; window.Fernand.q[arguments[0] === 'set' ? 'unshift' : 'push'](arguments); }; window.Fernand('init', { appId, ...config }); const script = document.createElement('script'); script.src = 'https://messenger.getfernand.com/client.js'; script.async = true; document.body.appendChild(script); if (Object.keys(config).length > 0) { window.Fernand('set', config); } return () => { document.body.removeChild(script); delete window.Fernand; }; } }, [appId, config]); return null; }; ``` ### Using the widget in your app Once you've created the component, you can import and use it in your application. Here's how to implement it: 1. Import the `FernandWidget` component where you want to use it: ``` import FernandWidget from './components/FernandWidget'; ``` 2. Add the widget component to your app, typically in your root component or layout ``` function App() { return ( { } ); } ``` ### Configuration options You can customize the widget's appearance and behavior through the `config` prop. Here are some common options. Check our [support widget list of settings](/features/support-widget/setting-up-the-support-widget#list-of- settings) for a full reference. * **iconColor** The color of the widget icon (hex code) * **accentColor** The primary color used throughout the widget (hex code) * **position** Where the widget appears on the screen ('left' or 'right') The widget will automatically handle script loading and cleanup when your component unmounts, ensuring optimal performance and resource management in your React application. ### Next.js and SSR If you're using Next.js or another server-side rendering framework, ensure the widget only loads on the client side. The provided code already includes a check for `typeof window !== 'undefined'` to handle this, but you might need to import the component dynamically: ``` import dynamic from 'next/dynamic'; const FernandWidget = dynamic( () => import('../components/FernandWidget'), { ssr: false } ); ``` --- Title: Shared drafts Url: https://help.getfernand.com/features/shared-drafts --- Shared drafts allow you to collaborate seamlessly with your teammates, streamlining your workflow and boosting productivity. This is especially helpful for founders who delegate their inboxes to VAs or support agencies. ## How shared drafts work Shared drafts enable multiple team members to work on the same conversation simultaneously. Whether you're crafting a response to a complex customer inquiry or developing a new product description, shared drafts make collaboration a breeze. ### Getting started with shared drafts Follow these simple steps to create and share your first draft: 1. Start typing a response as you would normally do on the `Reply` field 2. Select `Share draft` or hit `⌘+D` 3. Select which team member you want to review the draft or assign to everyone ## **Creating drafts automatically with Rules** Our automation engine allows you to create intelligent triggers for draft creation. For example: * Automatically create a draft for conversations that match specific keywords * Generate AI drafts for recurring issue types * Route drafts to specific team members based on ticket complexity or topic ## **AI-Powered draft generation** Customize your AI draft generation with specific prompts tailored to your support style, product, and customer communication guidelines. Match it with any trigger condition, and create multiple variations for you to pick from easily (e.g., you could use prompts like ‘Accept’, ‘Decline’, ‘Ask more information’, etc..) The AI drafts will then be automatically created when the conditions you selected as triggers are met. --- Title: Track knowledge base analytics with Fathom Url: https://help.getfernand.com/features/knowledge-base/track-knowledge-base-analytics-with-fathom --- [Fathom Analytics](https://usefathom.com/) is a simpler, more accurate, and privacy-first analytics solution. You can import your Google Analytics data (UA and GA4), add a single line of code, and watch real-time analytics from your site pour in. It's possible to track your knowledge base visits and performance with Fathom seamlessly by following the guide below. 1. Add a new website on [Fathom Analytics](https://usefathom.com/). Make sure you set your knowledge base URL as `Domain` 2. Head over to Fernand's settings → Knowledge Base → Custom JS section 3. Paste the code below, making sure to replace `YOUR-SITE-ID` by your actual SiteID from Fathom ``` var script = document.createElement('script'); script.type = 'text/javascript'; script.src = 'https://cdn.usefathom.com/script.js'; script.dataset.site = 'YOUR-SITE-ID' script.defer = true; document.getElementsByTagName('head')[0].appendChild(script); ``` --- Title: Headless contact form Url: https://help.getfernand.com/features/headless-contact-form --- Create custom forms on your website that connect directly to Fernand conversations. This integration allows you to place headless contact forms anywhere without requiring our JavaScript widget. ## Basic implementation To create conversations from a static form, send a POST request to `https://api.getfernand.com/messenger/contact` with these required fields: * `name` \- Customer's name * `email` \- Customer's email address * `subject` \- Conversation subject * `message` \- Main content of the message * `slug` \- Your organization identifier * `success_url`/`failure_url` \- Redirect URLs (for HTML forms) **Important** : The `slug` parameter identifies your organization. If using JavaScript instead of HTML forms, you can pass this via the `X-AppId` header. ### Basic HTML Example ``` Name Email Subject Message Send ``` ## Response handling We recommend using JavaScript `XHR/fetch` to handle responses directly on your site, but you can also use redirect URLs: * With `redirect_url`: Users are redirected with a `state` parameter ("success" or "error") * Error responses include `error` (message) and `code` (HTTP status code) parameters * Without `redirect_url`: The server returns appropriate status codes: * `204` \- Successful submission * `400` \- Field validation errors (JSON response with details) * `428` \- No default channel configured * `429` \- Rate limited (too many requests) ## Advanced Features These advanced features require JSON submissions rather than basic HTML forms. ### Custom fields Add additional data using the `extra` parameter: ``` { "extra": [ { "label": "Company Role", "value": "CEO" }, { "label": "Company Size", "value": "1-10" }, { "label": "Company Name", "value": "Acme Corp" } ]} ``` ### File attachments Include files using the `attachments` parameter: ``` { "attachments": [ { "name": "screenshot.png", "type": "image/png", "size": 15631, "content": "iVBORw0KGgoAAAANSUhEUgAAAB..." } ]} ``` When converting files to base64 in JavaScript, remove the prefix (`data:image/png;base64,...`) and only include the actual base64 data. ### Conversation tags Automatically apply tags to new conversations: ``` { "tags": ["website-inquiry", "support", "new-customer"]} ``` ### Channel routing Override the default channel with the `channel` parameter: ``` ``` You can also provide a `SHA256` hash of the email to keep it hidden: ``` ``` ## User authentication Authenticate users by providing a `hash` parameter created by signing the user's email with your secret key: ``` ``` For detailed instructions on generating this hash, see [Authenticating Users](/features/support-widget/authenticating-users). ## Security measures We implement several protections against abuse: * Rate limiting: 5 submissions per minute per IP address * Daily submission limits to prevent excessive use * User-agent filtering to block submissions from bots and automated systems These measures ensure your headless contact forms remain secure while providing a smooth experience for legitimate users. --- Title: Write as an agent Url: https://help.getfernand.com/features/support-widget/write-as-an-agent --- With Fernand's widget, you can write messages that appears to be coming from your team - or from our automated messaging (with a "flash" avatar). This is easily done by calling the Fernand widget with the "write" parameter, and with the second parameter being an object that will contain the following required parameters: * `message` \- The message to write * `hash` \- The message, hashed using the key provided in the settings You can also pass the following optional parameters: * `conversation` \- By default, the current conversation will be used, and a new conversation will be created if no current conversation is set. You can either pass: * `current` \- To write in the current conversation (defaults) * `new` \- To write in a new conversation * `${conversation_id}` \- The conversation ID you want to write to * `agent` \- The agent's email, but hashed using the SHA256 algorithm, to avoid leaking your private email to the external world. * `callback` \- A function that will be called once the message was sent to the user. The function will have one parameter given: the conversation ID, in order for you to write other messages in the same thread. Here's a custom implementation: ``` Fernand('write', { message: 'Hi! Do you need any help?', hash: '2cd7c249f655f1ef3682f480aae72a59387772431f176b97996a2cc4864857db', agent: '8ebdca5f696088f694d641a1276ac8c7b9ad526cc45a8820ae19ce2704efb4a7', conversation: 'new', callback: (convId) => { setTimeout(() => { Fernand('write', { message: 'Feel free to respond if you need anything', hash: 'e633d46747e8b5de99dbfa584face65f5bd93540d37ed7da84e09c280522d6cc', agent: '8ebdca5f696088f694d641a1276ac8c7b9ad526cc45a8820ae19ce2704efb4a7', conversation: convId }) }, 2500) } }) ``` ## Why hashing the message It is required to provide a hashed version of the message, by using the HMAC and SHA256 hashing algorithm, like explained on [Authenticating users](/features/support-widget/authenticating-users). On our side, we will hash your message in the same way, using your chat widget secure key, and will compare that generated hash with your provided hash. **If it doesn't match, the message will not be displayed to your user.** By validating the hash, we ensure that the person behind writing the message do have the secure key in their possession. Hopefully it will be only you. The reason we need to do that, is to ensure that not everyone is able to write a message that looks like coming from one of your agent. Imagine the case where we would not require this security measure; A visitor could open the developer console, and write a message, saying it comes from your CEO as the agent, and saying the CEO offer 12 months for free. That's not great for business ! For this reason, we need to ensure the message is truly originating from your organization, and the only way to do that is by hashing the message with the secret key. Of course, you should generate the hash manually and copy/paste the generated hash in your public website. DO NOT generate the hash on the fly on your website with your chat secure key available, otherwise anyone will be able to access it, and it will defeat the purpose of securing the message (and the entire widget)! ## Optional parameter The call to `Fernand('write', { ... })` accepts a third parameter, a boolean, that will open the chat widget if the widget is not already open and if the parameter is set to `true`. By default, the widget stays closed (like if you were to pass the parameter `false`), but you can set it to `true` and the widget will open automatically if it's not already open. If the widget is closed but a new message arrive, a small tooltip will appear on top of the widget's icon, containing your message. Clicking on it will open the conversation in question. --- Title: Compose pre-filled messages from URL parameters Url: https://help.getfernand.com/features/compose-pre-filled-messages-from-url-parameters --- Fernand allows you to create hyperlinks that open the compose window with pre- filled fields, similar to the `mailto:` protocol. This feature lets you integrate email composition directly into your workflows, websites, or applications. ## How it works Create a URL that points to any page within your Fernand account (Bonjour, conversations list, or a specific conversation), and add the `compose` parameter along with any additional optional parameters. Here's an example: ``` https://app.getfernand.com/{{your-slug}}/bonjour?compose&to=richard%40piedpiper.com&subject=About%20your%20inquiry&body=Hi%20Richard%2C%0AWe%20wanted%20to%20let%20you%20know%20that%20we%20read%20your%20inquiry%20and%20will%20come%20back%20to%20you%20soon.%0A%0AThank%20you ``` This can be helpful to set up such a link from within your administration tool, or even directly within your [custom data](/features/custom- data/getting-started-with-custom-data) parameters. ## Optional parameters **All values must be URI encoded** We recommend using [this tool](https://www.urlencoder.org/) to encode your strings. Parameter| Description| Example ---|---|--- `from`| Specifies the sending channel| `from=work%40example.com` `to`| Sets recipient(s), separate multiple with commas| `to=client%40company.com%2Cteam%40company.com` `cc`| Carbon copy recipient(s)| `cc=manager%40company.com` `bcc`| Blind carbon copy recipient(s)| `bcc=archive%40company.com` `subject`| Email subject line| `subject=Meeting%20Request` `body`| Email content| `body=Hello%2C%0A%0ALet's%20schedule%20a%20meeting.` ## Notes * If a specified `from` channel is not found, Fernand will default to the first available channel * The URL can point to any page within your Fernand account * All parameter values must be properly URI encoded --- Title: Polar integration Url: https://help.getfernand.com/integrations/polar-integration --- Learn how to sync customer and payment data from [Polar](https://www.polar.sh) into Fernand using our native integration. ## What is Polar? [Polar](https://polar.sh/) is a modern monetization platform for developers and indie hackers. It lets you sell digital products, manage subscriptions, deliver license keys, and gate access to GitHub repositories or Discord servers — all with a developer-first experience and a clean, open-source foundation. Polar is a streamlined alternative to platforms like [Lemon Squeezy](/integrations/lemon-squeezy-integration) or Gumroad, built for the open web. ## How it works After connecting your [Polar](https://polar.sh/) account to Fernand, you’ll be able to see customer payment information and product access details directly within each customer conversation. This enables you to: * Instantly verify if someone is an active customer * Prioritize conversations from high-tier plans * View product purchases and payment history in context * * * ## How to connect Fernand with Polar 1. Go to your settings (or hit `G` then `S` ) by clicking on your avatar at the bottom left corner of your Fernand dashboard. From there, select "Integrations" on the left navigation. 2. Click on **Connect Polar**. 3. You'll be redirected to Polar to authorize the connection. 4. Once approved, Fernand will begin syncing customer data automatically. That’s it! You’ll now see Polar customer info directly in Fernand's conversation list and sidebar. * * * ## How to automate your inbox with Polar data Once Polar is connected, you can create automation rules in Fernand based on Polar data. Let’s walk through a basic example: auto-replying to all customers on your “Pro” plan. 1. Go to [Rules](https://app.getfernand.com/settings/organization/rules) in Fernand. 2. **Create a new rule** Click `Add rule` and give it a descriptive name. 3. **Select a trigger** This ensures the rule runs on each new customer message. 4. **Select a condition** Now add a condition based on Polar data. For example: \- Contact is a customer \- Contact has paid plan... 5. **Select an action** Now define what happens when the rule matches. For example: \- Send an auto reply (with variables) \- Assign the conversation to a specific agent \- Tag the conversation with `priority` or `paid` \- Trigger a webhook for external automation ## Disconnecting the integration If you ever want to disconnect Polar: 1. Go to the [Integrations](https://app.getfernand.com/settings/organization/integrations) page. 2. Click **Disconnect** next to Polar. Deleting your organization on Fernand will also remove the Polar integration automatically. --- Title: Taking advantages of filters Url: https://help.getfernand.com/features/custom-data/taking-advantages-of-filters --- You can improve the values you receive from your server by applying filters that will convert the data to something more readable. ### number Will convert a value in a readable number, such as "999,999" * `response.quantity|number` => 999,999 ### price Will convert a value into a number. You can pass the currency which defaults to "$" and round the thousands as "k". * `response.amount|price` => $999,999 * `response.amount|price('€')` => €999,999 * `response.amount|price(thousands=True)` => $999k * `response.amount|price('€', thousands=true)` => €999k ### datetime Will convert a string into a datetime that you can then manipulate. We accept a string in Isoformat, a standard "YYYY-MM-DDTHH:mm:ss", a timestamp (both in seconds or miliseconds). You can pass a parameter to define the output format. We follow the format from : * `response.created|datetime` => "2025-05-25 13:37" * `response.created|datetime('%Y-%m-%d')` => "2025-05-25" ### relative Convert a date in relative format from now. It can either be in the past or the future and the output will adjust ("xx days ago" or "in xx days"). * `response.created|relative` => "2 months ago" ### timedelta Allows you to add a period to a given date. We accepts _years_ , _months_ , _days_ , _hours_ , _minutes_ and _seconds_ as parameter (all in their plural form) and you can pass more than one at once. * `response.remove_in|timedelta(days=7)` * `response.update_at|timedelta(hours=-2)` Know that you can also combine them. For instance, the following is absolutely possible: ``` response.created_at|timedelta(hours=-2)|relative ``` --- Title: Tabs Url: https://help.getfernand.com/features/custom-data/tabs --- The **Tabs component** in custom data allows you to organize and display information in a clean, organized manner. Users can easily switch between different sections of content using the tab navigation. ## How to implement tabs To add tabs to your custom data, you'll need to include both the tab navigation and the content containers. The structure consists of two main parts: the tab list and the content panels. ### Basic structure Here's the basic HTML structure you'll need. You can add as many tabs as you want, but need to make sure the link routes to a data-tab div. Use the `selected` class to provide a default tab — it will then be handled automatically when you switch tabs later on. ``` First tab Second tab First tab content Second tab content ``` ### Key components * The outer `tabs` class container * Navigation list with tab triggers * Content panels with corresponding `data-tab` attributes * The `selected` class for active states --- Title: Collapsible Url: https://help.getfernand.com/features/custom-data/collapsible --- The **Collapsible** component**** in custom data helps you present information in a clean, structured way. Ideal for accordion-style panels, it lets you reveal details only when needed—keeping your Fernand sidebar tidy and clutter- free. ## How collapsible elements work Collapsible elements consist of a header and a content section that can be toggled to show or hide information. They're particularly useful for organizing large amounts of data into manageable, digestible sections. ### Basic structure The basic structure of a collapsible element includes two main parts: ``` Section title Content goes here. Remove 'collapsed' class to show it by default. ``` ### Controlling visibility To control the visibility of your collapsible elements, use the `collapsed` class. When added, the element is collapsed (hidden) by default. The interactivity is then handled automatically for you a user toggle the element in and out. ### Best practices Follow these guidelines to maintain consistency across your collapsible elements: * Use descriptive titles that clearly indicate the content * Keep content concise and well-organized * Maintain consistent spacing between elements --- Title: AI training Url: https://help.getfernand.com/features/artificial-intelligence/ai-training --- Training your AI in Fernand helps you deliver smarter, faster support by letting the AI learn from your own content. Whether you want the AI to answer from your documentation, past conversations, or custom snippets, it all starts here. ## Where is your training used? Once you’ve added your knowledge sources, Fernand’s AI taps into them across the product to boost accuracy and relevance. Here's where your custom training comes into play: * **Smart replies on the editor** When replying to a conversation, the AI can suggest relevant completions based on your imported knowledge. * **AI drafts via automation rules** When you use [rules](/features/automation-rules/rules) to generate AI drafts, Fernand uses your training data to craft an informed response tailored to your tone and content. * **AI Chat Agent on the live chat widget** If enabled, the AI agent on your site will use your sources to respond to visitors confidently and on-brand. * **Knowledge base article AI generation** When creating new help articles, AI suggestions will draw from your training data to help you write faster and more consistently. Your training data is the brain behind all of these touchpoints—helping your team move faster while staying aligned. ## How to add knowledge sources Head to **Automation → AI training** in **Settings**. From here, you can import your content using four different input methods: * **Website** : Point to a URL and optionally crawl the entire site * **File** : Upload PDFs, Word docs, or plain text files * **Q &A**: Manually define a set of questions and answers * **Text** : Paste custom training text directly #### Website import Click `Add source`, and select the **Website** tab, paste your URL (for example: `https://help.getfernand.com`), and check _Crawl the entire website_ if you want Fernand to go beyond that single page. This is great for public docs, changelogs, or blog posts you want the AI to reference. #### File upload Click `Add source`, and select the **File** tab, drag and drop your documents. Fernand supports: * .pdf * .doc / .docx * .txt You can upload files up to **5MB each** and a total of **10MB** of training data. #### Manual Q&A In the **Q &A** tab, you can write questions that customers frequently ask, along with your ideal answer. You can also add similar variations of each question to help the AI generalize. This is especially useful for onboarding, pricing, or known edge cases. #### Custom text In the **Text** tab, just paste in any freeform content you'd like the AI to learn from. This could be a script, product philosophy, tone of voice guide. Anything that helps your AI “sound like you.” ### Syncing from existing content You can also enable AI to automatically learn from your existing Fernand setup: * **Help articles** : Auto-sync your knowledge base * **Past replies** : Let the AI learn from how your team has answered similar questions Just click “Enable sync” above the training sources list, and Fernand will keep everything fresh in the background. ### Good to know * Imported sources count toward your 10MB training limit * You can delete or replace sources at any time * After import, training happens almost instantly. Just wait a few seconds to see it reflected. Fernand’s AI features are powered by **OpenAI**. While we don’t train or fine- tune any models on your data, the content you import may be temporarily processed to generate relevant answers. For that reason, avoid uploading private, sensitive, or personal data that you wouldn’t want shared or used as context in AI replies. That’s it! Once your sources are in, your AI is ready to help out. Just make sure you’ve toggled it on in your **chat or email channel** to start seeing results. --- Title: AI drafts Url: https://help.getfernand.com/features/artificial-intelligence/ai-drafts --- Fernand’s [rules engine](/features/automation-rules/rules) lets you automate your support workflows with a powerful set of actions. One of the most powerful? **“Write an AI draft”** — a game changer that pre-fills replies for your team, based on prompts you define. ### How it works When setting up a rule, you can choose `Write an AI draft` from the list of actions. This opens a small editor where you can: * **Set a title** for your draft (e.g. “Accept" or "Decline"). * **Write a prompt** that tells the AI what kind of reply to generate. You can include dynamic variables like `{{customer.name}}` or `{{conversation.latest_message}}` to personalize the response even more. Once triggered, the rule will generate a draft message and attach it to the conversation — so when your teammate opens it, they’re not starting from a blank page. They’re starting from a well-crafted draft, ready to fine-tune and send. ### Why it’s a game changer Instead of writing replies from scratch, your team can choose from **multiple pre-written AI drafts** — for example: * Accept * Decline * Ask for more info Each draft is generated using a different prompt, and you can attach as many as needed to a single rule. Your team simply picks the one that fits, tweaks the wording if needed, and hits send. Done. #### Example * **WHEN:** A conversation is created * **IF:** The message contains “refund” * **THEN DO:** * Write an AI draft: `Accept refund` * Write an AI draft: `Decline refund` * Write an AI draft: `Ask for more info` Each option shows up as a draft your teammate can select from. They stay in control, but now they’re editing instead of inventing. ### Trained on your knowledge sources The responses generated by these AI drafts aren’t generic they’re tailored to your tone, brand, and product knowledge thanks to your [AI training](/features/artificial-intelligence/ai-training). The model uses your past replies, help center content, and custom instructions to craft drafts that sound like you. So when your team picks a draft, it already knows about your product and speaks your language. --- Title: AI chat agent Url: https://help.getfernand.com/features/artificial-intelligence/ai-chat-agent --- The AI chat agent in Fernand lets you embed smart, friendly automation directly into your live chat widget, handling common questions instantly while routing complex ones straight to your team. It’s a lightweight boost to your support flow, designed to be helpful without ever replacing the human touch your customers love. ## How it works Once enabled, the AI chat agent responds to messages in your widget using your [AI training](/features/artificial-intelligence/ai-training): that includes your help center, past conversations, and internal docs. You can think of it as a polite, tireless teammate that knows your business inside out and replies instantly. ### Turning it on By default, the AI chat agent is off. You can enable it anytime by heading to your Chat settings and toggling it on. Once it’s on, it just works—answering common questions, capturing intent, and making sure your team only steps in when it really matters. ### Always human-friendly Unlike other tools that push users through rigid AI scripts, Fernand always gives users an escape hatch. If they want to talk to a real person, they can. No tricks, no dead ends. Our tests showed that customers are more likely to engage with AI-powered support **when they know a human is just a click away**. --- Title: Cloudflare email routing Url: https://help.getfernand.com/getting-started/email-provider-setup-guides/cloudflare-email-routing --- Setting up your email channel in Fernand using Cloudflare Email Routing is a quick and powerful way to centralize your customer communications without jumping between tools. Once connected, all emails to your support address will land directly in Fernand, and you’ll be able to reply from your own domain, with proper authentication and deliverability. 1. Open your Cloudflare dashboard and click on **Compute** , then **Email Service,** and **Email Routing** 2. Click on **Destination Addresses** 3. Then, click on **Add Address** 4. In the modal dialog, add your Fernand inbox email in the **Email Address** field It should look like `support@piedpiper.fernand-mails.com` 5. You will need to validate ownership of that email address. Once you hit **Save** , an email will be sent to your Fernand inbox. Click on the link in the email to prove ownership. 6. Then, head back to **Cloudflare** > **Compute** > **Email Service** > **Email Routing** and click on the **Routing Rules** tab in the page 7. On the Routing Rules tab, click on **Create Address** in the **Custom address** section 8. Add your `support@piedpiper.com` support inbox, and select the **Send to an Email option** under**Action** 9. Then, select your Fernand inbox redirection address `support@piedpiper.fernand-mails.com` in the **Destination** dropdown, and hit Save 10. Send a test email to your support inbox at `support@piedpiper.com` to make sure it lands on Fernand. You should be all set! ## Need help? If this all feels a bit much, no worries: we’ve got you. You can [book a free call](https://www.cal.eu/antoineminoux/fernand-demo) and we’ll walk through it with you, step by step. **This setup is a one-time thing** Once your email channel is live and authenticated, you’re all set to start sending and receiving support emails from Fernand. No further setup is needed. --- Title: Namecheap Url: https://help.getfernand.com/getting-started/email-provider-setup-guides/namecheap --- Connecting your support email to Fernand via Namecheap is a smooth ride. You’ll be able to receive customer emails directly inside Fernand and reply from your own domain, fully authenticated and ready for serious SaaS business. ## Step 1: Forward emails to Fernand Fernand generates a unique forwarding address for your inbox. You’ll find it in **Settings → Channel → Email**. Copy that address, you’ll need it to set up the redirect. 1. Log in to your Namecheap account and go to **Domain List**. 2. Click **Manage** next to your domain name. 3. Navigate to the **Advanced DNS** tab. 4. Scroll down to **Mail Settings** and choose **Email Forwarding** from the dropdown. 5. Click **Add Forwarder**. Set the **Alias** to your support address (like _support@yourdomain.com_), and the **Forward to** address to your Fernand email (the one ending in _.fernand-mails.com_). 6. Save your changes. Done! Your inbound emails will now land in Fernand. ## Step 2: Authenticate your domain To send emails from Fernand using your domain, you’ll need to add a few DNS records. These prove you're legit and help with deliverability. In **Settings → Channel → Email** , Fernand gives you three records to add. These include: * A `TXT` record for DKIM * A `CNAME` record for domain verification * Another `CNAME` record for bounce handling 1. In Namecheap, under your domain, go to the **Advanced DNS** tab. 2. Scroll down to the **Host Records** section. 3. Click **Add New Record** for each of the 3 DNS entries Fernand provides. 4. Use the exact `Type`, `Host/Key`, and `Value` listed in your Fernand settings. 5. Wait a bit. DNS changes may take a few minutes to propagate. Fernand will auto-detect them when ready. ## Need help? If any step is unclear or you just want to skip the hassle, you can [book a free onboarding call ](https://savvycal.com/fernand/3019f5e3)with our customer success team. We’ll get everything sorted for you. Once this setup is done, it’s fire-and-forget. Your support inbox will just work—so you can focus on building your SaaS, not wrangling DNS records. --- Title: GoDaddy Url: https://help.getfernand.com/getting-started/email-provider-setup-guides/godaddy --- Got a domain with GoDaddy? You’re just a few steps away from having all your support emails flow into Fernand and sending replies straight from your own domain with full authentication. Let’s get it done. ## Step 1: Forward emails to Fernand Fernand gives you a unique email address to forward emails to. You’ll find it in **Settings → Channel → Email**. Keep it handy. 1. Log in to your **GoDaddy** account and go to your **My Products** page. 2. Under “Domains,” click **DNS** next to the domain you want to use. 3. If you’re using GoDaddy’s built-in email forwarding, scroll down to **Forwarding** and click **Add Forwarding**. 4. Set your **Forwarding address** (like _support@yourdomain.com_) and paste your Fernand address as the **Destination**. 5. Make sure “Forward type” is set to **Email** and save your changes. GoDaddy will now forward all incoming support emails to Fernand’s inbox. ## Step 2: Authenticate your domain To send emails from Fernand using your domain (without deliverability issues), you’ll need to add a few DNS records that prove you own the domain and authorize Fernand to send emails on your behalf. Go to **Settings → Channel → Email** in Fernand to get your unique DNS entries. These typically include: * A **TXT** record for DKIM authentication * A **CNAME** record for domain verification * A **CNAME** record for bounce management 1. In your GoDaddy DNS settings, scroll down to the **Records** section. 2. Click **Add** and select the correct **Type** for each record. 3. Copy and paste the **Host** and **Value** fields exactly as they appear in Fernand. 4. Save each record. You don’t need to change the TTL—default is fine. 5. Wait a little. Fernand will automatically detect the records once DNS has propagated. ### Need help? If DNS settings make your head spin, no stress. We can walk you through the setup on a quick call. [Book a free session with our team](https://savvycal.com/fernand/3019f5e3) and we’ll handle the rest. **Pro tip:** You only have to do this once. After setup, your support emails will just work—fast, reliable, and fully branded with your domain. --- Title: OVH Url: https://help.getfernand.com/getting-started/email-provider-setup-guides/ovh --- If your domain is managed by OVH, you can easily forward your support emails to Fernand and authenticate your domain to send replies that look clean and professional. Here’s how to do it step by step. ## Step 1: Forward emails to Fernand To receive emails in Fernand, you need to create an email redirect from your OVH address (like _support@yourdomain.com_) to your Fernand-generated address. You’ll find that address in **Settings → Channel → Email**. 1. Log in to the **OVH Control Panel** and go to **Web Cloud → Emails**. 2. Select the domain you want to use and click on the **Email accounts** tab. 3. Click **Redirections** , then **Create a redirection**. 4. In the `From` field, type your public-facing email address (like _support@yourdomain.com_). 5. In the `To` field, paste your Fernand email address (the one ending in _.fernand-mails.com_). 6. Confirm and create the redirection. All emails sent to your OVH address will now be routed to Fernand. ## Step 2: Authenticate your domain To send replies from your domain via Fernand, you’ll need to add DNS records to your OVH dashboard. You’ll find the unique records you need to add in **Settings → Channel → Email**. Typically, you’ll need to add: * 1 **TXT** record (DKIM) * 2 **CNAME** records (one for verification, one for bounce management) 1. In the OVH Control Panel, go to **Domains** and select your domain. 2. Click the **DNS Zone** tab. 3. Click **Add an entry** for each record Fernand provides. 4. Select the correct type (TXT or CNAME), then enter the exact Host and Target/Value from Fernand. 5. Save and wait for DNS propagation. Fernand will automatically validate the setup once records are live. ## Need help? OVH’s interface can be a bit... French. If you want to skip the learning curve, [book a free setup call](https://savvycal.com/fernand/3019f5e3) with our team and we’ll walk through it together. **Pro tip:** You don’t need to keep checking back. Fernand will notify you once your domain is fully authenticated and ready to go. From then on, your support emails just flow ✨ --- Title: Name.com Url: https://help.getfernand.com/getting-started/email-provider-setup-guides/name-dot-com --- If your domain is hosted on Name.com, you can easily route your support emails into Fernand and reply from your domain with proper authentication. Here's how to get everything set up in just a few minutes. ## Step 1: Forward emails to Fernand Name.com supports free email forwarding, which makes it simple to route incoming emails to your Fernand address. You’ll find your unique Fernand address in **Settings → Channel → Email**. 1. Log in to your **Name.com** account and go to the **My Domains** section. 2. Click **Quick Links → Email Forwarding** next to your domain. 3. Click **Add Forwarding**. 4. In the `From` field, enter the email address you want to use publicly (like _support@yourdomain.com_). 5. In the `To` field, paste your Fernand address (the one ending in _.fernand-mails.com_). 6. Save your changes. Your support emails will now arrive in Fernand. ## Step 2: Authenticate your domain To send emails from Fernand on behalf of your domain, you’ll need to add three DNS records. These ensure your emails don’t get flagged as spam and prove Fernand is allowed to send from your domain. Go to **Settings → Channel → Email** in Fernand to get your unique records. You’ll typically need to add: * 1 **TXT** record for DKIM * 1 **CNAME** record for domain verification * 1 **CNAME** record for bounce tracking 1. In your Name.com dashboard, go to **My Domains → DNS Records**. 2. Click **\+ Add Record** for each of the entries provided by Fernand. 3. Select the correct record type (TXT or CNAME), and enter the Host and Answer fields exactly as shown in your Fernand settings. 4. Save each record. Leave TTL as default unless you have a reason to change it. 5. Fernand will automatically detect your records once they’ve propagated. ### Need help? Not sure where to paste what? We’re here to help. [Book a free setup call](https://savvycal.com/fernand/3019f5e3) with our team and we’ll walk through it with you. This is a one-time setup. Once it’s done, your support emails will flow right into Fernand and your replies will look sharp and trustworthy. --- Title: Dynadot Url: https://help.getfernand.com/getting-started/email-provider-setup-guides/dynadot --- Using Dynadot to manage your domain? Here’s how to connect your support email to Fernand so you can receive incoming messages and reply from your domain with full authentication. Let’s walk through it. ## Step 1: Forward emails to Fernand Dynadot supports free email forwarding. You’ll use this to redirect your support email address (like _support@yourdomain.com_) to your Fernand- generated address. You’ll find that address in **Settings → Channel → Email**. 1. Log in to your **Dynadot** account. 2. Go to **Manage Domains** and click on the domain you want to connect. 3. Scroll down to **Email Settings** and select **Email Forwarding**. 4. Click **Add Email Forwarding**. 5. Enter your public-facing address (like _support@yourdomain.com_) and paste your Fernand email address in the `Forward To` field. 6. Click **Save**. Emails will now route to Fernand. ## Step 2: Authenticate your domain To send emails from Fernand using your domain, you’ll need to add a few DNS records. This step proves you own the domain and improves email deliverability. In **Settings → Channel → Email** , Fernand gives you three DNS records: * 1 **TXT** record (DKIM) * 1 **CNAME** record for domain verification * 1 **CNAME** record for bounce handling Here’s how to add them in Dynadot: 1. In the Dynadot dashboard, go to **Manage Domains → DNS Settings**. 2. Select **DNS** from the dropdown and choose **Custom DNS**. 3. For each record, click **Add Record** and enter the correct Type, Host, and Value from Fernand. 4. Save your changes. DNS updates may take a few minutes to propagate. ## Need help? If you get stuck or just want someone to double-check everything, we’re happy to help. [Book a free setup call](https://savvycal.com/fernand/3019f5e3) with our team and we’ll take care of it together. **Pro tip:** Once your DNS records are validated, Fernand will automatically recognize them and your email channel will be ready for action. --- Title: Porkbun Url: https://help.getfernand.com/getting-started/email-provider-setup-guides/porkbun --- Got your domain on Porkbun? Perfect. You can easily set up email forwarding to Fernand and authenticate your domain to send replies that land in inboxes—not spam folders. Here's how to get it all working. ## Step 1: Forward emails to Fernand Porkbun offers free email forwarding, which you’ll use to redirect emails from your domain to your Fernand address. You’ll find your unique Fernand email in **Settings → Channel → Email**. 1. Log in to your **Porkbun** account and head to the **Domain Management** page. 2. Find your domain and click the **Email** icon (envelope). 3. Click **Create New Email Forward**. 4. In the “Email Address” field, enter the address you want to forward (like _support@yourdomain.com_). 5. In the “Forward To” field, paste your Fernand email address (ending in _.fernand-mails.com_). 6. Click **Add**. You’re now receiving support emails in Fernand. ## Step 2: Authenticate your domain To send emails from Fernand on behalf of your domain, you’ll need to add three DNS records. These prove your identity and help avoid spam filters. In **Settings → Channel → Email** , Fernand gives you the following: * 1 **TXT** record for DKIM * 1 **CNAME** record for domain verification * 1 **CNAME** record for bounce tracking 1. Back in Porkbun, go to the **Domain Management** page and click **DNS** next to your domain. 2. Click **Add Record** for each entry Fernand gives you. 3. Choose the correct Type (TXT or CNAME), and paste the Host and Answer exactly as shown in your Fernand settings. 4. Click **Submit** after each record. That’s it. Once DNS changes propagate (usually within a few minutes), Fernand will auto- detect them and mark your domain as authenticated. ## Need help? If you run into trouble or just want a second pair of eyes, we’re here for you. [Book a free setup call](https://savvycal.com/fernand/3019f5e3) with our team and we’ll walk through it together. Once everything is connected, your support emails will flow into Fernand automatically and replies will come from your domain. Simple, clean, and ready for scale. --- Title: Hover.com Url: https://help.getfernand.com/getting-started/email-provider-setup-guides/hovercom --- Using Hover to manage your domain? You can easily connect it to Fernand by setting up email forwarding and authenticating your domain. Let’s walk through the steps so you can start handling support emails like a pro. ## Step 1: Forward emails to Fernand Hover offers free email forwarding with every domain. You’ll use this to route emails from your public address (like _support@yourdomain.com_) to your Fernand-generated address. You’ll find your Fernand address in **Settings → Channel → Email**. 1. Log in to your **Hover** account. 2. Go to the **Domains** tab and click on your domain. 3. Scroll to the **Email Forwarding** section. 4. Click **Add A Forward**. 5. Enter the email address you want to forward (like _support@yourdomain.com_). 6. Paste your Fernand address (ending in _.fernand-mails.com_) in the destination field. 7. Click **Save**. Hover will now route your emails into Fernand. ## Step 2: Authenticate your domain To send emails from Fernand using your domain, you’ll need to add a few DNS records. This ensures high deliverability and proves that Fernand is authorized to send emails on your behalf. You’ll find these records in **Settings → Channel → Email** and they typically include: * 1 **TXT** record (DKIM) * 1 **CNAME** record for domain verification * 1 **CNAME** record for bounce handling 1. Still in Hover, scroll to the **DNS** section of your domain. 2. Click **Add A Record** for each of the entries Fernand provides. 3. Select the appropriate Type (`TXT` or `CNAME`), and enter the `Host` and `Value` exactly as shown in your Fernand settings. 4. Click **Save** after each record. DNS propagation can take a few minutes. Fernand will automatically confirm once your records are detected and your domain is authenticated. ## Need help? DNS stuff can be finicky. If you’d rather we walk through it together, [book a free setup call](https://savvycal.com/fernand/3019f5e3) and we’ll get your email channel connected in no time. Once your records are live, you’re good to go. Your support emails land in Fernand, and replies go out signed with your domain. No compromises. --- Title: Download the original raw email Url: https://help.getfernand.com/features/download-the-original-raw-email --- You might need to download the original EML that we received at Fernand for any purposes. With Fernand, it's really easy: When looking at an incoming email, you can click on the channel email right under the incoming message, and click on it. A menu will appear: Clicking on the "Download EML file" will download you the email in its original form before we processed it on our end, including the header and the various part. --- Title: Split a conversation Url: https://help.getfernand.com/features/split-a-conversation --- Sometimes, your customer will reach out to you in an existing conversation, requesting something completely unrelated to their needs. You can easily create a new conversation starting at a specific incoming message by clicking on the details right under the message, such as "via email" or via the channel email you have configured: From there, a menu will appear offering you to move this to a new conversation. Clicking on it will move this message and all the following exchanges and events to a new conversation, allowing you to treat a dedicated point and closing the old exchange. --- Title: Delete a specific message Url: https://help.getfernand.com/features/delete-a-specific-message --- You might need to delete a specific incoming message for any reasons and this is easily possible in Fernand. To do that, you can click on the text right under the message, that indicates the source of the message, such as "via chat" or via your email channel: From there, a small menu will appear offering you various options, including the possibility to delete the selected message. Clicking on this "Delete" action will prompt you to confirm before executing the action and then, your message will be fully removed from our system. --- Title: Adding the widget to Framer Url: https://help.getfernand.com/features/support-widget/adding-the-widget-to-framer --- If you’re building your marketing site with Framer, you can easily integrate your Fernand support widget so visitors can chat with your team directly from your site. With code ovverides, it's also possible to open, close or toggle the visibility of the widget from a link in your Framer site. Here’s how to set it up. ## Add the widget script First, make sure the Fernand widget script is embedded in your site. In Framer, open your project settings, go to the **Code** tab, and paste your Fernand snippet in the **Custom code → End of tag** section. You can find your snippet in Fernand at **Settings → Chat** ## Create a code override To control the widget (open, close, or toggle) from buttons inside Framer, create a new code file in your Framer project called **FernandOverrides.tsx** and paste the following code: ``` // FernandOverrides.tsx import type { Override } from "framer" function getFernand(): ((...args: any[]) => void) | null { const w = window as any return typeof w !== "undefined" && typeof w.Fernand === "function" ? w.Fernand : null } /** Attach to a button to OPEN the widget */ export function FernandOpen(): Override { return { onTap() { const Fernand = getFernand() if (!Fernand) return console.warn("Fernand widget not loaded yet.") Fernand("open") ;(window as any).__fernandOpen = true }, } } /** Attach to a button to CLOSE the widget */ export function FernandClose(): Override { return { onTap() { const Fernand = getFernand() if (!Fernand) return console.warn("Fernand widget not loaded yet.") Fernand("close") ;(window as any).__fernandOpen = false }, } } /** Attach to a button to TOGGLE (open if closed, close if open) */ export function FernandToggle(): Override { return { onTap() { const Fernand = getFernand() if (!Fernand) return console.warn("Fernand widget not loaded yet.") const isOpen = (window as any).__fernandOpen === true if (isOpen) { Fernand("close") } else { Fernand("open") } ;(window as any).__fernandOpen = !isOpen }, } } ``` ## Connect a button Once your overrides are ready, select any button in Framer, open the **Code** panel on the right, and choose one of the functions: * **FernandOpen** – opens the widget * **FernandClose** – closes the widget * **FernandToggle** – toggles the widget open or closed ## Troubleshooting If you see _"Fernand widget not loaded yet."_ in your console, double-check that the Fernand widget script is properly embedded in your Framer site and loads before you try to trigger it. Once loaded, the override will work immediately. The widget may not appear inside Framer’s built-in preview. To see it live, **publish** your site and open it in a new tab. --- Title: Spam Score Url: https://help.getfernand.com/features/automation-rules/filtering-by-spam-score --- You can filter incoming messages by evaluating their spam score and applying custom rules based on that score. Behind the scenes, our system uses SpamAssassin to analyze each email and assign a numerical score. A SpamAssassin score typically ranges from –10 to +10, where higher numbers indicate a higher likelihood that the message is spam. As a general rule, SpamAssassin treats messages with a score of 5 or above as spam. To make this easier to understand and configure, we’ve simplified the score into three filtering levels: * Strict (Score of 3) – Filters spam with a risk of false positives * Balanced (Score of 5) – Filters spam with low risk of false positives * Lenient (Score of 7) – Blocks obvious spam with minimal false positives **Why there is no options for score of 10 ?** We think that if you want to have a high score (meaning you want all the spam to arrive) then a rule is not needed here, that's why we don't have a score filter of 10. --- Title: Enabling Fernand's bug tracking tool Url: https://help.getfernand.com/support/enabling-fernands-bug-tracking-tool --- Fernand includes a built-in bug tracking tool designed to help identify and troubleshoot issues quickly. 1. First, you'll need to enable the tracking on your Fernand's account. For that, **open the developer console** by hitting F12. You should see a new pane on your browser with a few tabs in it. Select the `Console` tab. 2. In it, **paste the following command** to start the debugging agent ``` localStorage.setItem('fernand.debug', 'true') ``` 3. **Refresh the page.** This should enable the tracking system on your account. If you keep the developer console open, you should now see a message that says: _"[Fernand Debug] - Tracking ready."_ 4. You can freely close the developer console now ✌️ Please keep in mind that the tracker is enabled only for your specific browser. If you visit Fernand on another browser, computer or device, it won't collect debug logs. ### Download the tracking report Use Fernand as usual. When a bug happens or something behaves unexpectedly: 1. Open the developer console (F12) 2. Run this command in the Console tab: ``` FernandDebug('download') ``` 3. A file will be download to your computer, that you can send to us. For information, our debug script only store the actions made in the past 5 minutes only, no longer, and everything is stored on your computer (nothing is sent to us) up to when you send us the file you get when calling "download". ### Disabling Fernand debug tool If anything starts to behave weirdly, cause loading or performance issues, or anything that was working before but stopped working after you enabled the debug system, you can disable it by opening the developer console again, and entering the following command: ``` localStorage.removeItem('fernand.debug') ``` --- Title: GitHub integration Url: https://help.getfernand.com/integrations/github-integration --- The GitHub integration connects your support inbox with your development workflow. It lets you create and link GitHub issues directly from any conversation so engineering gets clean context and support stays updated without switching tools. ## Activating GitHub You can enable the integration from Settings. Press `G` then `S`, open Integrations, and select GitHub. Connect your repository and confirm permissions. ## Creating issues from conversations Every conversation includes a GitHub panel where you can create a new issue with the same speed as our Linear integration. Fernand mirrors core GitHub fields so you keep full control without leaving the inbox. ### Create a new issue 1. 1\. Open a conversation that requires engineering work 2. Select GitHub in the sidebar or through the command palette by hitting `⌘+K` 3. Fill in the issue title, description, labels, assignees, etc.. 4. Create the issue. Fernand links it back to the conversation automatically ### Link to an existing issue 1. Open GitHub in the conversation or via the command panel (`⌘+K`) 2. Search for an existing issue by title or number. 3. Attach it. The conversation will stay synced with the issue’s status. ## Status sync When an issue changes on GitHub, Fernand updates the linked conversation. If you re-open an issue, the conversation re-opens so you can follow up with the customer. When the issue closes, support sees it instantly and can close the loop. ## Keyboard-first workflow The entire integration is built to stay fast: shortcut-friendly, minimal friction, and consistent with the rest of Fernand. Issue creation and linking works without losing focus in the inbox. The result is a calmer, faster support workflow, tightly integrated with GitHub and more polished throughout the product. --- Title: Installing the widget with Google Tag Manager Url: https://help.getfernand.com/features/support-widget/installing-the-widget-with-google-tag-manager --- You can load the Fernand support widget using Google Tag Manager instead of adding the script directly to your codebase. This is useful if you already manage scripts through GTM or want to avoid touching production code. ## How is the widget loaded? Fernand does not use installation keys or per-site tokens. The support widget is initialized using a static JavaScript snippet and an `appId` matching your organization. Fernand handles the rest automatically once the widget is loaded. You only need to add the provided script. There is no setup step inside the Fernand app. ## Add the widget to Google Tag Manager You will create a Custom HTML tag that loads the Fernand widget on your site. ### Create a custom HTML tag 1. Open your Google Tag Manager workspace. 2. Go to **Tags** and click **New**. 3. Click **Tag configuration** and select **Custom HTML**. 4. Paste the Fernand support widget script, making sure to replace `YOUR-APP-ID` with the `App ID` you found in your support widget embed script settings. ``` (function (w){ if (typeof w.Fernand !== "function") { var f = function () { f.qarguments[0] == 'set' ? 'unshift' : 'push'; }; f.q = []; w.Fernand = f; } })(window); Fernand('init', { appId: 'YOUR-APP-ID' }) ``` ### Configure the trigger Set the tag to fire on **All Pages** so the widget is available everywhere. If you only want the widget on specific pages, you can restrict the trigger to those paths. For optimal user experience we recommend choosing “Window Loaded”, so your website loads as fast as possible. ## Publish the container Once the tag and trigger are configured, click **Submit** in Google Tag Manager to publish your changes. The widget will start loading as soon as the updated container is live. ## Verify the installation Open your site in a browser and look for the Fernand widget. If it does not appear: * Use Tag Manager Preview mode to confirm the tag is firing. * Check the browser console for JavaScript errors. * Disable ad blockers that might block third-party scripts. ## Next steps After installation, you can optionally identify users or pass context using `Fernand('set', ...)`. This can be done in the same tag or in a separate tag that runs after initialization. You can find a list of parameters you can pass to customize your widget here: [Setting up the support widget](/features/support-widget/setting-up-the- support-widget) ## Authenticate and identify visitors By default, visitors are anonymous. If your users are logged in, you can identify them and optionally authenticate them so conversations are tied to a real account. This is done by calling `Fernand('set', ...)` after the widget is initialized. ### Identify a logged-in user To attach basic identity to a visitor, set their email and name. ``` Fernand('set', 'user', { email: 'user@company.com', name: 'Jane Doe' }); ``` ### Authenticate users with a hash To prevent users from impersonating others, you will need to authenticate them using a server-generated hash. The hash must be generated on your backend using the user’s email and your Fernand signing secret, then passed to the widget. ``` Fernand('set', 'user', { email: 'user@company.com', name: 'Jane Doe', hash: 'generated_server_side_hash' }); ``` For security reasons, you should **never** generate the hash on the client. ### Where to place the authentication call When using Google Tag Manager, the safest setup is: * One tag to load and initialize the widget. * A second tag to identify and authenticate the user. The authentication tag should fire after the widget is loaded and only when the user is logged in. --- Title: Installing the widget on your Fernand knowledge base Url: https://help.getfernand.com/features/features/support-widget/knowledge-base/installing-the-widget-on-your-fernand-knowledge-base --- This article explains how to install the Fernand widget on your knowledge base. The setup takes a few minutes and does not require any custom integration. ## Where to install the widget The widget is configured directly from your Fernand workspace settings. 1. Open your Fernand workspace. 2. Go to **Workspace settings**. 3. Open **Knowledge base** , then click on the **Settings** tab. 4. Scroll down to **Custom Javascript**. ## Add the widget script Paste the following snippet into the **Custom Javascript** field. ``` window.fernandSettings = { appId: '{your-app-id}' } ``` You can customize the widget by passing extra parameters as you see fit, referencing the documentation at [Setting up the support widget](/features/support-widget/setting-up-the-support-widget) ## Find your appId The `appId` is the name of your organization inside Fernand. You can find it directly in your Fernand URL when you are logged in. _Example_ : https://app.getfernand.com/piedpiper/bonjour In this case, your `appId` is `piedpiper`. ## Verify the installation Once saved, open your knowledge base in a new tab. If the widget appears, the installation is complete. No further configuration is required. --- Title: API docs reference Url: https://help.getfernand.com/api-documentation/api-docs-reference --- ### Accessing the API docs You can find the complete and up-to-date documentation for our API at . This is your go-to resource for everything from authentication to endpoint references and example requests. [API reference](https://developers.getfernand.com/) ### Getting started with the API To hit the ground running, we recommend visiting the "Getting Started" section on the docs site. It walks you through the basics of setting up your API key, making your first request, and understanding the response structure. #### Authentication To interact with the Fernand API, you need to include your API key in every request. This is done by passing it in the `X-Api-Key` header. You can create and manage your keys directly from your Fernand dashboard under Integrations → API Key. [Authentication](https://developers.getfernand.com/docs/authentication) #### Making requests Use standard HTTP methods like GET and POST to interact with the API endpoints. Be sure to set the Content-Type header to application/json when sending JSON payloads. [Quickstart guide](https://developers.getfernand.com/#quick-start) ### Additional resources Besides the core API docs, you’ll find helpful guides, FAQs, and sample code snippets to speed up your development process. Our community forum is also a great place to ask questions and share ideas. --- Title: Any provider Url: https://help.getfernand.com/getting-started/email-provider-setup-guides/any-provider --- You can easily connect to Fernand by setting up email forwarding and authenticating your domain. Let’s walk through the steps so you can start handling support emails like a pro. 1. Log in to your **Email provider** account. 2. Find the **Email Forwarding** section. 3. Find where to add a new forwarder, e.g. **Add A Forward** or **New routing email** 4. Enter the email address you want to forward (e.g. `support@piedpiper.com`). 5. Paste your Fernand address (e.g. `support@piedpiper.fernand-mails.com`) in the destination field. 6. Click **Save** 7. **Send a test email** to `support@piedpiper.com` to confirm you receive messages properly on your new Fernand inbox. ### Need help? If this all feels a bit much, no worries: we’ve got you. You can [book a free call](https://www.cal.eu/antoineminoux/fernand-demo) and we’ll walk through it with you, step by step. **This setup is a one-time thing** Once your email channel is live and authenticated, you’re all set to start sending and receiving support emails from Fernand. No further setup is needed. --- Title: ImprovMX Url: https://help.getfernand.com/getting-started/email-provider-setup-guides/improvmx --- Setting up your email channel in Fernand using ImprovMX is a simple and efficient way to centralize your customer communications without switching between tools. Once connected, all emails sent to your support address will flow directly into Fernand, allowing you to reply from your own domain while maintaining proper authentication and reliable deliverability. 1. Open your [ImprovMX dashboard](https://app.improvmx.com/) and log in with your credentials. 2. Find your domain name in the list, and add a new alias with your support inbox `support@piedpiper.com` 3. In the redirection input field, enter your Fernand inbox email `support@piedpiper.fernand-mails.com` 4. Click on **Add** to add this email forwarder, then hit **Test** to send a test email to your `support@piedpiper.com` email address. You should be all set! ## Need help? If this all feels a bit much, no worries: we’ve got you. You can [book a free call](https://www.cal.eu/antoineminoux/fernand-demo) and we’ll walk through it with you, step by step. **This setup is a one-time thing** Once your email channel is live and authenticated, you’re all set to start sending and receiving support emails from Fernand. No further setup is needed. --- Title: Stripe integration Url: https://help.getfernand.com/integrations/stripe-integration --- The Stripe integration lets you connect your billing data directly to Fernand. This gives your support AI and inbox full context on subscriptions, payments, and customers without switching tools. Once connected, Fernand can fetch real-time Stripe data and use it to assist with support, prioritize conversations, and generate accurate replies. ## What you get After connecting Stripe, Fernand enriches conversations with billing context. * **Customer lookup** : match conversations to Stripe customers automatically * **Subscription visibility** : see plan, status, renewal dates * **Payment history** : access invoices and recent transactions * **AI context** : replies include billing details when relevant ## How it works Fernand connects to Stripe using your API key. When a user reaches out, Fernand tries to match their email to a Stripe customer and pulls relevant data. This data is available in the inbox and used by AI to generate more accurate replies. ## Connect Stripe You can connect Stripe in a few steps. 1. Go to **Settings → Integrations** 2. Select **Stripe** and connect to your account via OAuth 3. Done! Fernand will start **syncing** customer and subscription data automatically ## How data is used Stripe data is used to improve both visibility and AI responses. * Show subscription status directly in conversations * Reduce back-and-forth for common issues like refunds or upgrades --- Title: Slack Connect integration Url: https://help.getfernand.com/integrations/slack-connect-integration --- Slack Connect is useful for keeping close relationships with customers, but it is hard to manage as a support channel. Messages go unread, ownership is unclear, and important requests get buried in threads. Fernand turns your Slack Connect channels into structured conversations. Every customer message appears in your shared inbox alongside emails and live chats, so your team can see, assign, and act without losing context. ## How slack connect works Fernand syncs your Slack Connect channels directly into your inbox. Each thread becomes a conversation your team can manage like any other support request. Customers continue using Slack as usual. There is no change on their side. Your team gets structure and visibility on your side. ### What you can do from the inbox * Assign conversations to a teammate * Add tags and close conversations when done * Write replies with AI assistance * Leave internal notes that customers cannot see * Apply rules to route and prioritize messages * Access full customer context and history ### Automation and routing Rules apply to Slack conversations the same way they do for other channels. You can route messages based on channel, keywords, or sender. This helps you triage faster and avoid missed requests. ### Customer context Each conversation includes a sidebar with customer data, past conversations, and any custom data you track. This keeps replies fast and informed without switching tools. ## Connect slack 1. Open Settings > Integrations 2. Select Slack 3. Connect your workspace and choose channels **Any questions?** We can help you set Slack Connect up for your organization. Reach out via the support widget on the bottom right and we'll be right with you.