# TurboDocx Documentation > Turbocharging your Document Workflows This file contains all documentation content in a single document following the llmstxt.org standard. # Create Deliverable --- # Create Image Variable (Folder) --- # Create Tag --- # Delete Tags (by IDs) --- # Delete Template --- # Delete Variables (by IDs) --- # Edit Template Metadata --- # Extract Template Placeholders and Generate Preview --- # Get Template by ID --- # Get Templates and Folders --- # Read Tag --- # Read Variables (Folder) --- ## TurboDocx API Documentation Version: 1.0.0 TurboDocx API Documentation Welcome to the TurboDocx API Documentation. This comprehensive guide is designed to provide developers with all the information required to interact with the TurboDocx platform programmatically. Whether you're looking to automate document creation, manage your templates, or integrate TurboDocx features into your application, you'll find the necessary endpoints, parameters, and examples here. ## **Getting started guide** Before diving into the specifics of the API, ensure that you have obtained the necessary Access Token and have the correct permissions to access the desired resources. Keep your Access Token secure and do not expose them in publicly accessible areas such as GitHub, client-side code, etc. **The Authentication and Organization ID is a variable set at the root of the collection.** ## Base URL All API requests should be made to the base URL provided upon your API key registration. Typically, it looks like this: ``` typescript https://api.turbodocx.com ``` ## Authentication TurboDocx is working on it's API Key flows, and for the time being, we recommend grabbing the access token used from your user's accounts to leverage our APIs. You can find an example on how to get your access token in the `Blueprint` folder. To use the Access Token, use the following under the `Authorization Header` ``` typescript Authorization: Bearer YOUR_ACCESS_TOKEN ``` ### Authentication error response If an Access Token is missing, malformed, or invalid, you will receive an HTTP 401 Unauthorized response code. ### **Need some help?** In case you have questions, go through our tutorials, click through out UI and network trace it, or visit our [Discord](https://discord.gg/NYKwz4BcpX) to review topics, ask questions, and learn from others. --- # Update Tag --- # Update Variable (by ID) --- # Upload Template with Optional Default Values --- # SharePoint and OneDrive Integration The SharePoint integration in TurboDocx brings powerful document management capabilities to your organization's SharePoint environment. This seamless integration allows for efficient importing of templates from different SharePoint sites and User's OneDrive and effortless exporting of deliverables back to SharePoint. ## Configuring SharePoint and OneDrive for Business with TurboDocx This guide will provide you step-by-step instructions on creating a SharePoint integration that can connect to your SharePoint sites as well as OneDrive. We will be using the Microsoft Graph API to access the SharePoint and OneDrive resources. Pre-requisites: An Office365 Tenant with SharePoint and OneDrive for Business Enabled Access to the Admin/Azure portal and the ability to register an application. ## Step 1 : Register your application in Entra ID (Azure Active Directory): 1. Sign in to the SharePoint Dashboard (or Azure Admin Portal) and click on "Entra ID (Azure Active Directory)" in the respective menu. Click on the "App Registrations and then click on "New registration" ![](/img/sharepoint_and_onedrive/app-reg.png) 2. Enter a name for the application such as "TurboDocx Sharepoint integration", select the appropriate account type, and select Single Page Application with the redirect uri: "https://app.turbodocx.com" ![](/img/sharepoint_and_onedrive/Register_Application.png) 3. Click on the "Register Button" to create the application. 4. Note down the Application (Client) ID and the Directory (tenant) ID, as you will need them later. ![Alt text](/img/sharepoint_and_onedrive/Get_Site_ID_and_Client_ID.png) ## Step 2 : Configure API Permissions: 1. In the "App registrations" menu, click on "API" permissions" in the left-hand menu. 2. Click on "Add a permission" 3. Click "Microsoft Graph" and then "Delegated permissions" ![Alt text](/img/sharepoint_and_onedrive/Click_Delegated_Permissions.png) 4. Search for the following permissions and add them: Sites.Read.All - This permission allows TurboDocx to read all site collections, sites, lists, and list items in SharePoint on behalf of the signed-in user. Please note - TurboDocx does not make API calls to your SharePoint site without user interaction. This will mirror whatever permissions the user has in the SharePoint site. Files.ReadWrite.All - This permission allows TurboDocx to read and write (create, edit, and delete) all files in OneDrive for Business, SharePoint document libraries, and Microsoft Teams files on behalf of the signed-in user. With this permission, TurboDocx can access and manage files stored in OneDrive and SharePoint, including creating new files, updating existing files, moving or deleting files, and even sharing files with others. :::note TurboDocx does not make API calls to your SharePoint site without user interaction.Keep in mind that these are delegated permissions, which means TurboDocx can access these resources on behalf of the signed-in user. The level of access TurboDocx will have depends on the user's actual permissions in SharePoint and OneDrive. ::: ![Alt text](/img/sharepoint_and_onedrive/Graph_Permissions.png) 5. After clicking save, navigate back to "Add Permission" and click SharePoint. Click "SharePoint" and then "Delegated Permissions" ![Alt text](/img/sharepoint_and_onedrive/SharePoint_Delegated_Permissions.png) 6. Search for the following permissions and add them: **AllSites.Read** - This permission allows TurboDocx to read all site collections, sites, lists, and list items in SharePoint on behalf of the signed-in user. With this permission, TurboDocx can access and retrieve information about the SharePoint site content, such as document libraries, lists, and list items. **AllSites.Write** - This permission allows TurboDocx to write to all site collections, sites, lists, and list items in SharePoint on behalf of the signed-in user. With this permission, TurboDocx can create, edit, and delete SharePoint site content. This allows TurboDocx to save Deliverables to your SharePoint site. **MyFiles.Read** - This permission allows TurboDocx to read the signed-in user's files in OneDrive for Business. With this permission, TurboDocx can access and retrieve information about the user's files, such as file names, file types, and file metadata. MyFiles.Write - This permission allows TurboDocx to write to the signed-in user's files in OneDrive for Business. With this permission, TurboDocx can create, edit, and delete the user's files :::note TurboDocx does not make API calls to your SharePoint site without user interaction. This user's access will mirror whatever permissions the user has in the SharePoint site. Keep in mind that these are delegated permissions, which means TurboDocx can access these resources on behalf of the signed-in user. The level of access TurboDocx will have depends on the user's actual permissions in SharePoint and OneDrive. ::: ![Alt text](/img/sharepoint_and_onedrive/SharePoint_Permissions_Select.png) 7. The finished permission sets should look like the below: ![Alt text](/img/sharepoint_and_onedrive/Finished_Permission_Set.png) ## Step 3: Determine the default site that TurboDocx will open and get the path 1. The easiest way to do this is to navigate to your Site and find the path you want users to see first. 2. Take note of the URL path and notate it for future use. In this case it is "DocumentationTeam" ![Alt text](/img/sharepoint_and_onedrive/GetSiteName.png) ## Step 4: Login to your TurboDocx Tenant and go to Tenant Settings 1. As an admin within your TurboDocx tenant, navigate to the settings tab on the left-hand side-nav and click "Tenant Settings" in the top right corner. 2. If Hide SharePoint in the UI is selected, unselect this to get the SharePoint configuration button. 3. Click "Configure SharePoint" ![Alt text](/img/sharepoint_and_onedrive/Configure_Sharepoint_button.png) 4. Fill out the following fields with the information you have noted from previous steps and click "Save": Tenant Name - This is the name of the SharePoint tenant are connecting to. This can be found by looking in the browser bar and it should resemble "TenantName.SharePoint.com" Site Name - This is the name of the default site your users will land on when first opening the SharePoint file picker. This is noted from the previous step. **Client ID** - This is the Application (client) ID noted from the previous step in the EntraID (AzureAD) console. **Tenant ID** - This is the Directory (tenant) ID noted from the previous step in the EntraID (AzureAD) console. ![Alt text](/img/sharepoint_and_onedrive/SharePoint_Configuration_in_TurboDocx.png) 5. Test importing and Exporting templates using the steps noted in the following sections. ## Importing Templates One of the primary benefits of the SharePoint integration in TurboDocx is the ability to directly import templates from your SharePoint document libraries. This feature removes the need to manually upload templates to TurboDocx, streamlining the process and saving you both time and effort. By simply connecting your SharePoint tenant to TurboDocx, you can effortlessly access and import your templates. The integration offers a seamless browsing experience, enabling you to navigate through your SharePoint document libraries and folders to choose the desired templates for import. Whether you have pre-existing templates or wish to import templates created using other applications such as Microsoft Word or Office 365, the SharePoint integration simplifies the process. Upon selecting the templates, TurboDocx securely imports them into your TurboDocx account, ready for customization and document generation. This ensures that your templates are readily available within TurboDocx, eliminating the need for manual file transfers or duplicate storage. ![Alt text](/img/sharepoint_and_onedrive/Import_with_SharePoint.png) ## Exporting Deliverables The SharePoint integration also enables you to export deliverables generated by TurboDocx back to your SharePoint and One Drive for business accounts. Once you have personalized and generated documents based on your templates, you can seamlessly export them to your SharePoint storage for easy access and sharing. Exporting deliverables to SharePoint and One Drive for Business ensures that your documents are stored securely in the cloud, providing a reliable backup and making them accessible from any device with an internet connection. By leveraging the familiar SharePoint interface, you can organize your deliverables into folders, share them with collaborators, and control access permissions as needed. --- # SCIM User Provisioning TurboDocx offers enterprise customers the ability to integrate System for Cross-domain Identity Management (SCIM) provisioning with their platforms, enhancing user and group management across your organization. SCIM provisioning automates the user lifecycle process, ensuring that user accounts are created, updated, and deactivated in a synchronized manner across various applications and services. TurboDocx's SCIM implementation supports standard protocols, allowing for seamless integration with a wide range of identity providers (IdPs) that support SCIM standards. This ensures that TurboDocx can work effectively with your organization's existing identity management solutions. ## Supported Identity Providers Some of the major identity providers that support SCIM and can be integrated with TurboDocx include: - Okta - Microsoft Azure Active Directory (Azure AD) - and more Integrating SCIM provisioning with TurboDocx allows your IT teams to manage user identities and access rights efficiently from a central location, reducing administrative overhead and enhancing security. The automation of user account management provided by SCIM also helps in reducing the possibilities of human error during the account setup and maintenance phases. To set up SCIM provisioning with TurboDocx, please reach out to our support team. They will provide detailed guidance through the necessary steps and offer support throughout the setup process. Once SCIM provisioning is implemented, user account management will be automated according to the configurations set in your identity provider, streamlining the process and ensuring a consistent and secure user experience across all enterprise applications. --- # Single Sign-On (SSO) Configuration TurboDocx offers enterprise customers the ability to integrate their Single Sign-On (SSO) solution with the platform, streamlining user authentication and providing a secure and convenient way to access TurboDocx. Our SSO integration supports both Security Assertion Markup Language (SAML) and OpenID Connect (OIDC) protocols, which means we can seamlessly integrate with a wide variety of SSO providers. Some of the major SSO providers that we can integrate with include: - Okta - EntraID - Microsoft Azure Active Directory (Azure AD) - OneLogin - Auth0 - Google Cloud Identity - Ping Identity - Centrify - ADFS (Active Directory Federation Services) and more By integrating TurboDocx with your SSO solution, you can leverage the benefits of centralized user management, improved security, and simplified access to TurboDocx for your organization. This integration supports various directories, ensuring that you can maintain control over user authentication and access while still providing a seamless experience for your users. To set up the SSO integration, please contact our support team, who will guide you through the necessary steps and provide any assistance required during the process. Once the integration is complete, your users will be able to access TurboDocx through your organization's SSO solution, ensuring a secure and unified authentication experience across all your enterprise applications. --- ## ConnectWise PSA Integration # Automate Documents from ConnectWise PSA Data TurboDocx integrates directly with your ConnectWise PSA environment to eliminate manual copy-paste and transform your real data into documents, proposals, and presentations. Pull in data from companies, tickets, configurations, and more โ€” and generate polished deliverables instantly. ## What You Can Create * **๐Ÿ“„ Statements of Work (SOWs)**: Pull in configurations, timelines, and tasks from project boards * **๐Ÿ—Œ Ticket Summaries**: Turn tickets into polished summaries for clients * **๐Ÿ’ผ Client Reports**: Generate reports using real company data and services * **๐Ÿง  Technical Docs**: Document configurations, assets, or custom fields from ConnectWise * **๐Ÿšฐ Implementation Guides**: Auto-generate guides from projects and recurring service tickets * **๐Ÿ“Š Executive Briefs**: Create management-facing updates using ConnectWise reporting fields ## Before You Begin :::tip Not a PSA Admin? Donโ€™t worry โ€” this guide walks you through step-by-step. You donโ€™t have to be a PSA wizard. If you can follow a recipe, you can follow this. ๐Ÿป ::: You'll need: * Admin access to your ConnectWise PSA account * Your ConnectWise tenant endpoint URL (e.g., `https://yourcompany.connectwise.com`) * 5 minutes of time and a steady Wi-Fi signal ๐Ÿš€ After completing the setup, you'll have: * **Tenant Endpoint**: Your ConnectWise server URL (e.g., `https://yourcompany.connectwise.com`) * **Company Name**: Your ConnectWise company identifier (Site or Company ID) * **Public Key**: API public key * **Private Key**: API private key * **Client ID**: ConnectWise client application ID (you can get this from [https://developer.connectwise.com/ClientID](https://developer.connectwise.com/ClientID)) :::tip Quick PSA Primer ConnectWise PSA uses "API Members". You'll create a special user with read-only API access for TurboDocx. ::: ## Step 1: Create a Security Role and API Member ### A. Create a Read-Only Security Role 1. Log into the ConnectWise PSA dashboard 2. Navigate to **System** in the left navigation 3. Click on **Security Roles** ![Creating Security Role](/img/connectwise_integration/SecurityRoleCreation.png) 4. Press the **"+" (plus)** button in the top-left corner to create a new role 5. Set the **Role ID** to `TurboDocxIntegration` 6. Configure the following permissions with **Inquire Level** access: #### Company * **Company Maintenance** โ€“ Inquire All * **Company/Contact Group Maintenance** โ€“ Inquire All * **Configurations** โ€“ Inquire All * **Contacts** โ€“ Inquire All * **CRM/Sales Activities** โ€“ Inquire All * **Manage Attachments** โ€“ Inquire All * **Notes** โ€“ Inquire All * **Reports** โ€“ Inquire All * **Team Members** โ€“ Inquire All #### Finance * **Agreement Invoicing** โ€“ Inquire All * **Agreement Sales** โ€“ Inquire All * **Agreements** โ€“ Inquire All * **Billing View Time** โ€“ Inquire All * **Invoicing** โ€“ Inquire All * **Reports** โ€“ Inquire All #### Projects * **All Permissions** โ€“ Inquire All #### Sales * **Closed Opportunity** โ€“ Inquire All * **Opportunity** โ€“ Inquire All * **Sales Orders** โ€“ Inquire All * **Sales Orders Finance** โ€“ Inquire All #### Service Desk * **Change Approvals** โ€“ Inquire All * **Close Service Tickets** โ€“ Inquire All * **Merge Tickets** โ€“ Inquire All * **Reports** โ€“ Inquire All * **Resource Scheduling** โ€“ Inquire All * **Service Tickets** โ€“ Inquire All * **Service Tickets โ€“ Finance** โ€“ Inquire All #### System * **Member Maintenance** โ€“ Inquire All * **My Company** โ€“ Inquire All #### Time and Expense * **Time Entry** โ€“ Inquire 7. Save the new role :::tip Best Practice The TurboDocx integration uses **read-only access** (Inquire level) to retrieve data from ConnectWise without making any modifications to your system. ::: ### B. Add API Member 1. Go to **System โ†’ Members** ![Navigate to ConnectWise Members](/img/connectwise_integration/NavigateToCWMembers.png) 2. Click the **API Members** tab ![Click API Members Tab](/img/connectwise_integration/ClickAPIMembers.png) 3. Click **"+" (Add New Member)** ![Click Plus to Add New API Member](/img/connectwise_integration/ClickPlusOnAPIMembers.png) 4. Fill out the form: ![Fill Out API Member Form](/img/connectwise_integration/FillOutAPIMember.png) * **Member ID**: `TurboDocx` * **Role ID**: `TurboDocxIntegration` * **Level**: Corporate * **Name/Email**: `Your CW Admin`, `CWAdmin@yourcompany.com` * **Location & Business Unit**: Required fields ### C. Generate API Keys 1. Scroll to **API Keys** at the bottom ![Click API Keys Section](/img/connectwise_integration/ClickAPIKeys.png) 2. Click **"+"**, name it `TurboDocx Key` 3. Save and securely store the **Public** and **Private** API keys ## Step 2: Configure TurboDocx 1. Log into your TurboDocx dashboard 2. Go to **Settings โ†’ Organization Settings** 3. Find **ConnectWise PSA Integration** and click **Configure** ![TurboDocx ConnectWise Configuration Fields](/img/connectwise_integration/TurboDocxFields.png) ### Enter Required Information * **Tenant Endpoint**: e.g. `https://yourcompany.connectwise.com` (or select from regional options) * **Company Name**: Your ConnectWise Site or Company ID * **Public Key**: The public API key generated in Step 2 * **Private Key**: The private API key generated in Step 2 * **Client ID**: Your ConnectWise client application ID Click **Save Settings**, then **Test Connection** to validate access. :::tip What Testing the Connection Does It validates your credentials and pulls your ticket types, boards, statuses, configurations, and custom fields for use in documents. ::: ## Step 3: Generate Documents from ConnectWise 1. Open the **Document Generator** in TurboDocx 2. Click **New Document** 3. Choose a template 4. Under **Change Source**, select **ConnectWise PSA** ![Click on ConnectWise PSA Agent in App Library](/img/connectwise_integration/ClickonConnectWisePSAAgentInAppLibrary.png) 5. Choose the object type: Tickets, Projects, Companies, etc. 6. Select records you want to use ![Access to Records in TurboDocx](/img/connectwise_integration/AccessToRecordsCWInTurbo.png) ### Example Prompts * โ€œCreate an SOW for this project with timelines, configurations, and tasks.โ€ * โ€œGenerate a config documentation PDF for selected assets.โ€ * โ€œSummarize all open tickets for this company.โ€ ## Troubleshooting ### "Invalid Credentials" Error * Check API keys, Company Name (Site/Company ID), and Tenant Endpoint * Confirm role permissions and member status * Verify Client ID is correct ### "Connection Failed" Error * Click **Test Connection** to verify settings * Ensure your PSA instance has data to access * Check that your tenant endpoint URL is correct ### โ€œPermission Deniedโ€ * Review the API memberโ€™s security role permissions :::tip Still Stuck? Take a screenshot, note the step, and send it to our support team. ::: ## Security and Privacy * ๐Ÿ” Read-only access only * ๐Ÿ“ฆ Encrypted data transfers * ๐Ÿ”’ API keys are not stored permanently * ๐Ÿ” Access can be revoked at any time in ConnectWise ## Final Thoughts You're ready to: * Generate project documents with no formatting headaches * Turn tickets and configs into polished deliverables * Automate technical documentation and reporting :::tip Last Tip Clean ConnectWise data = clean, impressive documents. Keep your CRM tidy! ::: --- ## Appendix: Permission Requirements Explained Understanding why TurboDocx requires specific Inquire permissions helps ensure proper setup and security compliance. ### Company Permissions **Company Maintenance** - **Inquire All** - Without this, TurboDocx can't query what companies exist for document generation **Company/Contact Group Maintenance** - **Inquire All** - Provides access to company and contact grouping data for organizational document generation **Configurations** - **Inquire All** - Enables access to company configuration data for technical documentation and reports **Contacts** - **Inquire All** - Essential for retrieving contact data to populate documents with recipient information **CRM/Sales Activities** - **Inquire All** - Without this, TurboDocx can't access sales activity data for inclusion in reports and proposals **Manage Attachments** - **Inquire All** - Required to access existing attachments for document templating **Notes** - **Inquire All** - Allows TurboDocx to review company and contact notes for inclusion in generated documents **Reports** - **Inquire All** - Provides access to existing report data for comprehensive document generation **Team Members** - **Inquire All** - Required to identify team members for assignment and attribution in generated documents ### Finance Permissions **Agreement Invoicing** - **Inquire All** - Provides access to agreement invoicing data for generating billing documents and financial reports **Agreement Sales** - **Inquire All** - Enables access to agreement sales data for creating sales reports and contract documentation **Agreements** - **Inquire All** - Provides access to agreement data for generating contracts, SOWs, and billing documents **Billing View Time** - **Inquire All** - Allows access to time tracking data for creating detailed billing reports and invoices **Invoicing** - **Inquire All** - Enables access to invoicing data for generating financial reports and billing summaries **Reports** - **Inquire All** - Provides access to financial reporting data for comprehensive document generation ### Project Management Permissions **All Permissions** - **Inquire All** - Comprehensive access to all project data enables generation of project documentation, status reports, and project summaries ### Sales Permissions **Closed Opportunity** - **Inquire All** - Provides access to closed opportunity data for won/lost analysis and historical sales reporting **Opportunity** - **Inquire All** - Essential for accessing active opportunity data to generate proposals, quotes, and sales reports **Sales Orders** - **Inquire All** - Enables access to sales order data for order documentation and fulfillment tracking **Sales Orders Finance** - **Inquire All** - Provides access to financial aspects of sales orders for billing and revenue reporting ### Service Desk Permissions **Change Approvals** - **Inquire All** - Provides access to change approval data for compliance and change management reporting **Close Service Tickets** - **Inquire All** - Allows access to completed ticket data for historical reporting and closure documentation **Merge Tickets** - **Inquire All** - Enables access to merged ticket data for comprehensive service history tracking **Reports** - **Inquire All** - Provides access to service desk reporting data for comprehensive document generation **Resource Scheduling** - **Inquire All** - Provides access to scheduling data for resource allocation reports and planning documents **Service Tickets** - **Inquire All** - Essential for accessing ticket data to generate service reports and client summaries **Service Tickets โ€“ Finance** - **Inquire All** - Enables access to ticket financial data for billing reports and cost analysis ### System Permissions **Member Maintenance** - **Inquire All** - Required to identify team members for assignment and attribution in generated documents **My Company** - **Inquire All** - Provides access to company configuration and branding information for document customization ### Time and Expense Permissions **Time Entry** - **Inquire** - Enables access to time tracking data for billing reports and project summaries :::note Security Note All permissions are set at the **Inquire** level to ensure TurboDocx operates with read-only access, maintaining data security while enabling document generation functionality. ::: --- *May your configs be documented, your projects delivered, and your SOWs write themselves โ€” automatically.* --- # Fireflies AI Integration Transform your meeting recordings into professional documents automatically. TurboDocx's Fireflies integration eliminates manual note-taking by converting meeting transcripts into polished deliverables, streamlining your post-meeting workflow. ## What You Can Create - **๐Ÿ“„ Meeting Summaries**: Convert discussions into formatted meeting minutes and action items - **๐Ÿ“Š Client Presentations**: Turn discovery calls into compelling presentation decks - **๐Ÿ“‹ Project Proposals**: Use requirement gathering sessions to create detailed proposals - **๐Ÿ“ Follow-up Reports**: Generate comprehensive meeting reports with key takeaways - **๐Ÿ’ผ Sales Materials**: Transform prospect calls into customized sales presentations - **๐Ÿ”„ Automated Workflows**: Connect meeting transcripts directly to your document templates ## Before You Begin To use the Fireflies integration, you'll need: - A Fireflies account with recorded meetings and transcripts - Administrative access to your Fireflies account to generate API keys - Meeting recordings stored in Fireflies with transcription enabled :::tip If you're not sure whether you have transcription enabled, check your Fireflies settings or look for transcript availability in your recorded meetings. ::: ## Step 1: Configuring Fireflies.ai ### Get Your API Key 1. Log in to [app.fireflies.ai](https://app.fireflies.ai) 2. Navigate to the **"Integrations"** section in your dashboard ![Fireflies Integration Section](/img/fireflies_integration/click_on_integration.png) 3. Click on **"Fireflies API"** ![Fireflies API Integration](/img/fireflies_integration/click_on_fireflies.png) 4. Click on **"Get API KEY"** ![Get API Key](/img/fireflies_integration/click_on_get_api_key.png) 5. **Copy your API key** - You'll need this value when configuring TurboDocx ![Copy API Key](/img/fireflies_integration/copy_api_key.png) :::tip Keep Your API Key Safe Your API key is like a password - never share it publicly or include it in emails. TurboDocx will store it securely once you enter it. ::: ## Step 2: Configuring TurboDocx ### ๐Ÿ”ง How to Configure Fireflies in Organization Settings 1. Go to **Settings** ![Go to Settings](/img/zoom_integration/GoToSettings.png) 2. Click on **Organization Settings** ![Go to Organization Settings](/img/zoom_integration/GoToOrganizationSettings.png) 3. Scroll down to the **Fireflies** section 4. Click **Configure Fireflies** ![Click Configure Fireflies](/img/fireflies_integration/configure_fireflies.png) 5. A Fireflies Configuration pop-up will appear 6. Take the **API Key** you obtained earlier, paste it into the appropriate field, and click **Save Configuration** ![Save API Key](/img/fireflies_integration/save_api_key.png) ## Step 3: Using Your Fireflies Integration Congratulations! Your Fireflies integration is now ready to use. Here's how to access your meeting transcripts and use them in your documents. ### Accessing Meeting Transcripts 1. Click the source dropdown and click **"Change Source"** 2. Go to the **App Library** tab 3. Click **"Transcript Providers"** ![Meeting Providers](/img/zoom_integration/MeetingProviders.png) 4. Click **"Fireflies"** and then you should be able to click the transcript 5. You'll see a list of your recent meeting recordings with transcripts ![Transcripts Shown](/img/fireflies_integration/transcripts.png) ## Troubleshooting If you're having trouble with your Fireflies integration, here are some common issues and their solutions. ### "No Meetings Found" - **Cause**: No recorded meetings with transcripts available - **Solution**: Ensure your meetings are recorded in Fireflies and have transcription enabled ### "Authentication Failed" - **Cause**: Incorrect API key or expired authentication - **Solution**: - Double-check your API key - Try re-authenticating by entering your API key again :::tip Getting Help If you continue to experience issues: - Verify all steps in this guide have been completed - Check that your Fireflies account has meeting recordings with transcripts - Ensure you have the correct API key from your Fireflies account - Contact your TurboDocx support team for assistance ::: ## Security and Privacy Your data security and privacy are important to us. Here's how your information is protected when using the Fireflies integration. ### How Your Data is Protected - **Secure Authentication**: TurboDocx uses API key authentication for secure access - **Read-Only Access**: We only read your data as per your request in the flow - we never modify your Fireflies data - **Encrypted Storage**: Your API key is stored encrypted in our secure systems - **Encrypted Transmission**: All data transfers are encrypted using industry-standard protocols ## Best Practices ### For Optimal Results - **Enable Transcription**: Always enable transcription when recording meetings in Fireflies - **Use Clear Audio**: Ensure good audio quality for more accurate transcripts - **Descriptive Meeting Names**: Use clear, descriptive names for your meetings to easily identify them later - **Regular Cleanup**: Periodically review and organize your meeting recordings ### Meeting Recording Tips - Start recording at the beginning of important meetings - Speak clearly and avoid overlapping conversations - Use a good quality microphone when possible - Consider recording in a quiet environment ## Finished Congratulations on setting up your Fireflies integration! You can now seamlessly import meeting transcripts and use them to create professional documents with TurboDocx. --- # Google Drive Integration The Google Drive integration in TurboDocx provides a seamless and efficient way to manage your document generation process. With this integration, you can import templates from Google Drive and export deliverables back to your Google Drive environment, streamlining your workflow and enhancing collaboration. Let's delve into the details of the Google Drive integration and explore its features and benefits. ## Importing Templates One of the key advantages of the Google Drive integration is the ability to import templates directly from your Google Drive storage. This functionality eliminates the need to manually upload templates to TurboDocx, saving you time and effort. By simply connecting your Google Drive account to TurboDocx, you can access and import your templates with ease. The integration provides a seamless browsing experience, allowing you to navigate through your Google Drive folders and select the desired templates for import. Whether you have pre-existing templates or want to import templates created using other applications such as Google Docs or Microsoft Word, the Google Drive integration simplifies the process. Upon selecting the templates, TurboDocx securely imports them into your TurboDocx account, ready for customization and document generation. This ensures that your templates are readily available within TurboDocx, eliminating the need for manual file transfers or duplicate storage. ![](https://image.typedream.com/cdn-cgi/image/width=3840,format=auto,fit=scale-down,quality=100/https://api.typedream.com/v0/document/public/de39171b-a5c9-49c5-bd9c-c2dfd5d632a2/2P7GcbCddIpTtDMDZpQltzuC1ff_Import_from_Google_Drive.png) ### **Exporting Deliverables** The Google Drive integration also enables you to export deliverables generated by TurboDocx back to your Google Drive. Once you have personalized and generated documents based on your templates, you can seamlessly export them to your Google Drive storage for easy access and sharing. Exporting deliverables to Google Drive ensures that your documents are stored securely in the cloud, providing a reliable backup and making them accessible from any device with an internet connection. By leveraging the familiar Google Drive interface, you can organize your deliverables into folders, share them with collaborators, and control access permissions as needed. ![](https://image.typedream.com/cdn-cgi/image/width=3840,format=auto,fit=scale-down,quality=100/https://api.typedream.com/v0/document/public/de39171b-a5c9-49c5-bd9c-c2dfd5d632a2/2P7LjJqYUUFwjrpmKHYZreunEVm_Export_to_Google_Drive.png) --- ## HubSpot Integration # Turn Your HubSpot Data into Professional Documents & Presentations Say goodbye to copy-pasting customer information! TurboDocx's HubSpot integration automatically pulls your real CRM data to create personalized documents, proposals, and presentations. No more "John Doe" placeholder text โ€” use actual customer names, deals, and details. ## What You Can Create - **๐Ÿ“Š Client Proposals**: Use real deal data to create compelling, personalized proposals - **๐Ÿ“„ Contact Reports**: Generate comprehensive reports with actual customer information - **๐Ÿ“‹ Meeting Summaries**: Create professional meeting notes using your HubSpot data - **๐Ÿ’ผ Sales Presentations**: Build custom presentations with live customer data - **๐Ÿ“ Follow-up Documents**: Generate personalized follow-ups using contact details - **๐Ÿ”„ Automated Reports**: Create recurring reports with fresh data from HubSpot ## Before You Begin :::tip For Our Technology-Shy Friends Don't worry! We've made this guide so detailed that any team member can follow it. Think of it as cooking instructions, but for software โ€” and just as tasty! ๐Ÿ˜„ ::: To use the HubSpot integration, you'll need: - A HubSpot account with Private App Access (free or paid โ€” we don't judge!) - Administrative access to create a HubSpot app - About 10 minutes and a cup of coffee โ˜• - This guide (which you're already reading โ€” you're ahead of the game!) :::tip Quick note This process involves creating something called a "private app" in HubSpot. Think of it as giving TurboDocx secure access to your HubSpot data โ€” and only the data you want to share. ::: ## Step 1: Creating Your HubSpot Private App The first step is creating a HubSpot private app. Think of this as getting a library card โ€” it gives TurboDocx permission to temporarily read your HubSpot data. ### Navigate to HubSpot Developer Settings 1. **Open your web browser** and go to [hubspot.com](https://hubspot.com) - Use Chrome, Firefox, Safari, or Edge 2. **Log into your HubSpot account** - Use your normal email and password - If you forgot your password, there's a "Forgot Password?" link (we've all been there!) ![HubSpot Login](/img/hubspot-integration/hubspot-dashboard.png) 3. **Find the Settings gear** in the top right corner - It looks like a little wheel with teeth โš™๏ธ - If you can't find it, it's probably hiding next to your profile picture ![HubSpot Settings Gear](/img/hubspot-integration/hubspot-settings.png) 4. **Click on the Settings gear** - A menu will appear ### Navigate to Integrations 1. **Look for "Integrations"** in the left sidebar - It's usually about halfway down the list - If you don't see it, try scrolling down slowly (no need to rush!) ![Navigate to Integrations](/img/hubspot-integration/create-private-app-steps.png) 2. **Click on "Integrations"** - The menu will expand to show more options 3. **Find and click "Private Apps"** - It might be hiding under the Integrations section - Think of it as a secret menu item at your favorite restaurant ![Navigate to Integrations](/img/hubspot-integration/create-private-app-steps.png) ### Create Your Private App 1. **Click "Create a private app"** - Usually a big, friendly blue button - If there's no button, you might need admin permissions (time to find your BFF at your IT department!) ![Navigate to Integrations](/img/hubspot-integration/create-private-app-steps.png) 2. **Fill in the basic information**: - **App name**: Type something memorable like "TurboDocx Integration" or "TurboDocx Document Generator" - **Description**: Add a simple description like "This connects my HubSpot data to TurboDocx for document and presentation generation" - **Logo**: Optional - it's up to you! ![App Basic Info](/img/hubspot-integration/app-logo-description.png) :::tip Pro Tip Choose an app name you'll remember six months from now. "App123" might seem clever today, but future you will not be amused! ๐Ÿ˜ ::: ### Configure App Permissions (The Important Part!) 3. **Click on the "Scopes" tab** - This is where you tell HubSpot what data TurboDocx can access - Itโ€™s like setting clear boundaries โ€” you choose exactly what TurboDocx can read from your CRM. ![Scopes Tab](/img/hubspot-integration/add-scope-step.png) 4. **Add the required scopes** (permissions) - Each scope is like giving TurboDocx permission to read a specific type of data ![Scopes Tab](/img/hubspot-integration/scope-adding-step.png) :::tip Attention to Detail Required You'll be adding about 50 different permissions. It's like checking off a very long grocery list โ€” but necessary for the feast ahead! ๐Ÿ›’ ::: **Here's the complete list of scopes to add** (copy each one EXACTLY): **CRM Lists:** - `crm.lists.read` **CRM Objects (the big list):** - `crm.objects.appointments.read` - `crm.objects.carts.read` - `crm.objects.commercepayments.read` - `crm.objects.companies.read` - `crm.objects.contacts.read` - `crm.objects.courses.read` - `crm.objects.custom.read` - `crm.objects.deals.read` - `crm.objects.feedback_submissions.read` - `crm.objects.goals.read` - `crm.objects.invoices.read` - `crm.objects.leads.read` - `crm.objects.line_items.read` - `crm.objects.listings.read` - `crm.objects.marketing_events.read` - `crm.objects.orders.read` - `crm.objects.owners.read` - `crm.objects.partner-clients.read` - `crm.objects.partner-services.read` - `crm.objects.products.read` - `crm.objects.quotes.read` - `crm.objects.services.read` - `crm.objects.subscriptions.read` - `crm.objects.users.read` **CRM Pipelines:** - `crm.pipelines.orders.read` **CRM Schemas:** - `crm.schemas.appointments.read` - `crm.schemas.carts.read` - `crm.schemas.commercepayments.read` - `crm.schemas.companies.read` - `crm.schemas.contacts.read` - `crm.schemas.courses.read` - `crm.schemas.custom.read` - `crm.schemas.deals.read` - `crm.schemas.invoices.read` - `crm.schemas.line_items.read` - `crm.schemas.listings.read` - `crm.schemas.orders.read` - `crm.schemas.quotes.read` - `crm.schemas.services.read` - `crm.schemas.subscriptions.read` **Sales & Communication:** - `sales-email-read` **Scheduler:** - `scheduler.meetings.meeting-link.read` **Settings:** - `settings.currencies.read` - `settings.security.security_health.read` - `settings.users.read` - `settings.users.teams.read` **Tax:** - `tax_rates.read` ### How to Add Each Scope **For each scope in the list above:** 1. **Find the search box** (it might say "Search for scopes") 2. **Click inside the search box** 3. **Type the scope name exactly** (every dot and dash matters!) 4. **Look for the dropdown** that appears below 5. **Click on the matching result** 6. **Repeat for the next scope** ![Adding Scopes Process](/img/hubspot-integration/checked-scopes.png) :::tip Almost Done Yes, itโ€™s a few extra clicks โ€” but itโ€™s easy. Just check the boxes and youโ€™ll be on your way to automatic documents in no time. Think of it like flipping switches to power things up. โšก ::: ### Create Your App 5. **Click "Create app"** when you're done adding scopes - Take a moment to admire your handiwork first! ![Create App Final](/img/hubspot-integration/scope-added.png) ![Create App Final](/img/hubspot-integration/app-created.png) 6. **You'll see the Access Token (needed for later)** - This is super important! - leave this page open to use this key later ![Access Token](/img/hubspot-integration/click-on-auth.png) ![Access Token](/img/hubspot-integration/access-token-copiying.png) :::warning Handle With Care This token is kind of like a temporary library card โ€” it lets TurboDocx read only the data youโ€™ve approved. But just like a password, you donโ€™t want it ending up in the wrong hands. Keep it private, and if it ever gets shared by accident, no worries โ€” you can always generate a fresh one right here. ::: ## Step 2: Configuring TurboDocx Now we'll connect your shiny new HubSpot app to TurboDocx. This is like introducing two friends who are perfect for each other! ### Navigate to TurboDocx Settings 1. **Go to your TurboDocx dashboard** - Log in if you haven't already ![TurboDocx Dashboard](/img/hubspot-integration/settings-link.png) 2. **Click on "Settings"** - Look for the gear icon or "Settings" text - Usually in the top menu or sidebar ![TurboDocx Dashboard](/img/hubspot-integration/settings-link.png) 3. **Click on "Organization Settings"** - This might be in a dropdown or separate tab - If you can't find it, try looking for "Integrations" or "Connected Apps" ![Organization Settings](/img/hubspot-integration/org-settings.png) ### Configure HubSpot Integration 4. **Find the HubSpot section** - Look for the HubSpot logo or "HubSpot Integration" - It might be in a list with other integrations ![HubSpot Section](/img/hubspot-integration/select-configure-hubspot.png) 5. **Click "Configure HubSpot"** - A popup or form will appear - This is where the magic happens! โœจ ![Configure HubSpot Button](/img/hubspot-integration/hubspot-config-modal.png) 6. **Enter your Access Token** - Copy the Access Token from your HubSpot private app page and paste it here ![Access Token](/img/hubspot-integration/access-token-copiying.png) ![Access Token](/img/hubspot-integration/hubspot-access-token-copied.png) 7. **Click "Save Configuration"** - Cross your fingers (optional, but recommended!) ![Access Token](/img/hubspot-integration/click-save-configuration.png) ### Sync Your HubSpot Data 9. **Click "Refresh Fields"** - This button appears after the connection test succeeds - It downloads all your custom HubSpot fields and data - It also tests if your access token works ![Access Token](/img/hubspot-integration/refresh-fields.png) 10. **Wait for the field sync** - This can take 1-3 minutes - Time to check your email or practice your victory dance! ๐Ÿ’ƒ :::tip Success Celebration If you've made it this far, you deserve a pat on the back! You've successfully connected HubSpot to TurboDocx. That's no small feat โ€” you're basically a tech wizard now! ๐Ÿง™โ€โ™‚๏ธ ::: ## Step 3: Using Your HubSpot Integration Time to put your new integration to work! This is where the magic happens โ€” turning your HubSpot data into beautiful documents. ### Creating Your First Document 1. **Go to document generation** - Look for "Create Document", "New Document", or similar - This is usually on your main dashboard ![Document Generation](/img/hubspot-integration/home-page.png) 2. **Select Template** - Click on the template you want to work with ![Change Source](/img/hubspot-integration/template-page.png) 3. **Change your data source** - Click on the "Change Source" dropdown - Select "Change Resource" from the menu ![Change Source](/img/hubspot-integration/change-resource.png) 4. **Go to the App Library** - Click on the "App Library" tab - This shows all your connected integrations ![App Library](/img/hubspot-integration/app-library.png) 5. **Select CRM category** - Look for "CRM" and click on it - This filters to show only CRM integrations ![Select CRM](/img/hubspot-integration/crm-select.png) 6. **Choose HubSpot** - Click on "HubSpot" (you should see the orange logo) - It should show as "Connected" ![Choose HubSpot](/img/hubspot-integration/select-hubspot.png) 7. **Click "Continue"** - This takes you to the HubSpot agent interface ![Continue Button](/img/hubspot-integration/continue-click.png) ### Using the HubSpot Agent 8. **Select your records** (optional but helpful) - Click "Select Records" to choose specific contacts, deals, or companies - This helps the AI focus on the right data ![Select Records](/img/hubspot-integration/select-resource-btn.png) 9. **Choose relevant records** - Click on contacts, deals, or companies relevant to your document - Selected items will be highlighted - Click "Save" to confirm your record selection ![Choose Records](/img/hubspot-integration/select-records.png) 11. **Give instructions to the AI** - Type what kind of document you want in plain English - Be specific about what you want to create - Sit back and watch the magic happen! - Generation typically takes 30 seconds to 2 minutes ![AI Instructions](/img/hubspot-integration/prompt-continue.png) **Example prompts:** - "Create a professional proposal section for the selected deal using the contact's information" - "Generate a follow-up slide summarizing our recent meeting with this contact" - "Create a company overview report using the selected company data" - "Draft a project kickoff overview for the selected deal and contacts" 13. **Review your document** - Check that all the information looks correct - Make any necessary edits - Marvel at your personalized, professional document! :::tip Pro Document Tips - Be specific in your instructions โ€” "Create a proposal" vs. "Create a detailed Q3 marketing proposal section for ABC Corp with pricing and timeline" - Select the right records โ€” more relevant data = better documents - Don't be afraid to regenerate if the first attempt isn't perfect - Save successful prompts for future use! ::: ## Troubleshooting Even the best-laid plans sometimes go awry. Here are solutions to common issues: ### "I Can't Find the Settings Gear in HubSpot" **Solution**: - Look in the top right corner of your HubSpot dashboard - It's usually next to your profile picture - If you still can't find it, try refreshing the page or logging out and back in ### "Invalid Access Token" Error **Solution**: - Double-check that you copied the entire token (it's usually quite long) - Make sure there are no extra spaces at the beginning or end - Verify your HubSpot private app is still active - If all else fails, create a new private app and get a fresh token ### "Permission Denied" Error **Solution**: - Check that you added all the required scopes to your HubSpot private app - Make sure you're an admin in your HubSpot account - Verify the private app is enabled and not deactivated ### "No Records Found" in TurboDocx **Solution**: - Make sure you have actual data in your HubSpot account (contacts, deals, companies) - Click "Refresh Fields" again in your organization settings - Check that your HubSpot private app has the right permissions ### "The Agent Doesn't Understand My Instructions" **Solution**: - Be more specific in your prompts - Use simpler language - Include the type of document you want (email, proposal, report, etc.) - Try selecting more specific records :::tip When All Else Fails If you're still stuck, don't panic! Take a screenshot of any error messages, note exactly what step you're on, and contact your support team. We're here to help, not judge your tech skills! ๐Ÿค ::: ## Security and Privacy Your data security is important to us (and should be to you too!): ### How Your Data is Protected - **Secure Authentication**: We use OAuth 2.0 (fancy industry-standard security) - **Limited Permissions**: TurboDocx only gets permission to read your data, not change it - **Encrypted Transmission**: All data transfers are encrypted (like sending a letter in a locked box) ### Best Practices - **Keep Your Token Secret**: Don't share your access token with anyone - **Regular Reviews**: Periodically check which integrations have access to your data - **Rotate Tokens**: Periodically rotate your tokens for maximal security posture. ## Tips for Success ### Getting the Best Results **Keep Your HubSpot Data Clean**: - Use consistent naming conventions - Fill in important fields (contact info, deal values, etc.) - Keep your data up-to-date **Write Clear Instructions**: - Be specific about what you want - Mention the type of document - Include any special requirements **Select the Right Records**: - Choose records that are relevant to your document - Don't select too many records at once - Quality over quantity! ### Advanced Tips **For Better Proposals**: - Select the contact, deal, and company records - Include deal value and timeline information - Mention specific services or products **For Better Reports**: - Select relevant companies and contacts - Include date ranges if applicable - Specify the type of analysis you want **For Better Follow-ups**: - Select recent meeting attendees - Include deal or project context - Mention next steps or action items ## What's Next? Congratulations! You've successfully: - โœ… Created a HubSpot private app (you're basically a developer now!) - โœ… Connected it to TurboDocx (networking skills: unlocked!) - โœ… Generated your first document (content creation: mastered!) ### Now You Can: - Create personalized proposals in minutes instead of hours - Build comprehensive reports using your CRM information - Automate document creation for your entire team ### Next Steps: 1. **Train your team** on being a prompting pro 2. **Create document and presentation templates** for common use cases 3. **Experiment with different AI prompts** to find what works best :::tip Final Words of Wisdom Remember, you're not just creating documents or presentationsโ€” you're creating more time for yourself by automating repetitive tasks. Every minute saved on copy-pasting customer data is a minute you can spend on more important things (like actually talking to customers!). ๐ŸŽ‰ ::: ## Getting Help **If you need assistance:** 1. **Check this guide first** (you'd be surprised how often the answer is right here!) 2. **Take screenshots** of any error messages 3. **Note the exact step** where you got stuck 4. **Contact your TurboDocx support team** with the details **Remember**: There's no such thing as a bad question. We've all been there, and we're here to help you succeed! ๐Ÿ’ช --- *Happy document generating! May your proposals be persuasive, your reports be comprehensive, and your follow-ups be timely! ๐Ÿš€* --- # OneDrive and SharePoint Integration The OneDrive and SharePoint integration in TurboDocx offers a streamlined and effective way to manage your document generation process. With this integration, you can import templates from OneDrive or SharePoint and export deliverables back to these platforms, enhancing your workflow and collaboration efficiency. ## Configuration ### Configuring SharePoint and OneDrive for Business with TurboDocx This guide will provide you step-by-step instructions on creating a SharePoint integration that can connect to your SharePoint sites as well as OneDrive. We will be using the Microsoft Graph API to access the SharePoint and OneDrive resources. Pre-requisites: - An Office365 Tenant with SharePoint and OneDrive for Business Enabled - Access to the Admin/Azure portal and the ability to register an application. ### Step 1: Register your application in Entra ID (Azure Active Directory): 1. Sign in to the SharePoint Dashboard (or Azure Admin Portal) and click on "Entra ID (Azure Active Directory)" in the respective menu. Click on the "App Registrations and then click on "New registration" ![](/img/sharepoint_and_onedrive/app-reg.png) 2. Enter a name for the application such as "TurboDocx Sharepoint integration", select the appropriate account type, and select Single Page Application with the redirect uri: "https://app.turbodocx.com" ![](/img/sharepoint_and_onedrive/Register_Application.png) 3. Click on the "Register Button" to create the application. 4. Note down the Application (Client) ID and the Directory (tenant) ID, as you will need them later. ![Alt text](/img/sharepoint_and_onedrive/Get_Site_ID_and_Client_ID.png) ### Step 2: Configure API Permissions: 1. In the "App registrations" menu, click on "API" permissions" in the left-hand menu. 2. Click on "Add a permission" 3. Click "Microsoft Graph" and then "Delegated permissions" ![Alt text](/img/sharepoint_and_onedrive/Click_Delegated_Permissions.png) 4. Search for the following permissions and add them: **Sites.Read.All** - This permission allows TurboDocx to read all site collections, sites, lists, and list items in SharePoint on behalf of the signed-in user. :::note TurboDocx does not make API calls to your SharePoint site without user interaction. This will mirror whatever permissions the user has in the SharePoint site. ::: **Files.ReadWrite.All** - This permission allows TurboDocx to read and write (create, edit, and delete) all files in OneDrive for Business, SharePoint document libraries, and Microsoft Teams files on behalf of the signed-in user. With this permission, TurboDocx can access and manage files stored in OneDrive and SharePoint, including creating new files, updating existing files, moving or deleting files, and even sharing files with others. :::note TurboDocx does not make API calls to your SharePoint site without user interaction. Keep in mind that these are delegated permissions, which means TurboDocx can access these resources on behalf of the signed-in user. The level of access TurboDocx will have depends on the user's actual permissions in SharePoint and OneDrive. ::: ![Alt text](/img/sharepoint_and_onedrive/Graph_Permissions.png) 5. After clicking save, navigate back to "Add Permission" and click SharePoint. Click "SharePoint" and then "Delegated Permissions" ![Alt text](/img/sharepoint_and_onedrive/SharePoint_Delegated_Permissions.png) 6. Search for the following permissions and add them: **AllSites.Read** - This permission allows TurboDocx to read all site collections, sites, lists, and list items in SharePoint on behalf of the signed-in user. With this permission, TurboDocx can access and retrieve information about the SharePoint site content, such as document libraries, lists, and list items. **AllSites.Write** - This permission allows TurboDocx to write to all site collections, sites, lists, and list items in SharePoint on behalf of the signed-in user. With this permission, TurboDocx can create, edit, and delete SharePoint site content. This allows TurboDocx to save Deliverables to your SharePoint site. **MyFiles.Read** - This permission allows TurboDocx to read the signed-in user's files in OneDrive for Business. With this permission, TurboDocx can access and retrieve information about the user's files, such as file names, file types, and file metadata. **MyFiles.Write** - This permission allows TurboDocx to write to the signed-in user's files in OneDrive for Business. With this permission, TurboDocx can create, edit, and delete the user's files :::note TurboDocx does not make API calls to your SharePoint site without user interaction. This user's access will mirror whatever permissions the user has in the SharePoint site. Keep in mind that these are delegated permissions, which means TurboDocx can access these resources on behalf of the signed-in user. The level of access TurboDocx will have depends on the user's actual permissions in SharePoint and OneDrive. ::: ![Alt text](/img/sharepoint_and_onedrive/SharePoint_Permissions_Select.png) 7. The finished permission sets should look like the below: ![Alt text](/img/sharepoint_and_onedrive/Finished_Permission_Set.png) ### Step 3: Determine the default site that TurboDocx will open and get the path 1. The easiest way to do this is to navigate to your Site and find the path you want users to see first. 2. Take note of the URL path and notate it for future use. In this case it is "DocumentationTeam" ![Alt text](/img/sharepoint_and_onedrive/GetSiteName.png) ### Step 4: Login to your TurboDocx Tenant and go to Tenant Settings 1. As an admin within your TurboDocx tenant, navigate to the settings tab on the left-hand side-nav and click "Tenant Settings" in the top right corner. 2. If Hide SharePoint in the UI is selected, unselect this to get the SharePoint configuration button. 3. Click "Configure SharePoint" ![Alt text](/img/sharepoint_and_onedrive/Configure_Sharepoint_button.png) 4. Fill out the following fields with the information you have noted from previous steps and click "Save": **Tenant Name** - This is the name of the SharePoint tenant are connecting to. This can be found by looking in the browser bar and it should resemble "TenantName.SharePoint.com" **Site Name** - This is the name of the default site your users will land on when first opening the SharePoint file picker. This is noted from the previous step. **Client ID** - This is the Application (client) ID noted from the previous step in the EntraID (AzureAD) console. **Tenant ID** - This is the Directory (tenant) ID noted from the previous step in the EntraID (AzureAD) console. ![Alt text](/img/sharepoint_and_onedrive/SharePoint_Configuration_in_TurboDocx.png) 5. Test importing and Exporting templates using the steps noted in the following sections. ## Importing Templates One of the primary benefits of the SharePoint integration in TurboDocx is the ability to directly import templates from your SharePoint document libraries. This feature removes the need to manually upload templates to TurboDocx, streamlining the process and saving you both time and effort. By simply connecting your SharePoint tenant to TurboDocx, you can effortlessly access and import your templates. The integration offers a seamless browsing experience, enabling you to navigate through your SharePoint document libraries and folders to choose the desired templates for import. Whether you have pre-existing templates or wish to import templates created using other applications such as Microsoft Word or Office 365, the SharePoint integration simplifies the process. Upon selecting the templates, TurboDocx securely imports them into your TurboDocx account, ready for customization and document generation. This ensures that your templates are readily available within TurboDocx, eliminating the need for manual file transfers or duplicate storage. ![Alt text](/img/sharepoint_and_onedrive/Import_with_SharePoint.png) ## Exporting Deliverables The SharePoint integration also enables you to export deliverables generated by TurboDocx back to your SharePoint and One Drive for business accounts. Once you have personalized and generated documents based on your templates, you can seamlessly export them to your SharePoint storage for easy access and sharing. Exporting deliverables to SharePoint and One Drive for Business ensures that your documents are stored securely in the cloud, providing a reliable backup and making them accessible from any device with an internet connection. By leveraging the familiar SharePoint interface, you can organize your deliverables into folders, share them with collaborators, and control access permissions as needed. --- ## Salesforce Integration # Turn Your Salesforce Data into Professional Documents & Presentations Say goodbye to copy-pasting customer information! TurboDocx's Salesforce integration automatically pulls your real CRM data to create personalized documents, proposals, and presentations. No more "John Doe" placeholder text โ€” use actual account names, opportunities, and details. ## What You Can Create - **๐Ÿ“Š Sales Proposals**: Use real opportunity data to create compelling, personalized proposals - **๐Ÿ“„ Account Reports**: Generate comprehensive reports with actual customer information - **๐Ÿ“‹ Meeting Summaries**: Create professional meeting notes using your Salesforce data - **๐Ÿ’ผ Sales Presentations**: Build custom presentations with live customer data - **๐Ÿ“ Follow-up Documents**: Generate personalized follow-ups using contact details - **๐Ÿ”„ Automated Reports**: Create recurring reports with fresh data from Salesforce ## Before You Begin :::tip For Our Technology-Shy Friends Don't worry! We've made this guide so detailed that any team member can follow it. Think of it as cooking instructions, but for software โ€” and just as tasty! ๐Ÿ˜„ ::: To use the Salesforce integration, you'll need: - A Salesforce account with Connected App creation permissions (any edition works!) - System Administrator access to create a Salesforce connected app - About 15 minutes and a cup of coffee โ˜• - This guide (which you're already reading โ€” you're ahead of the game!) :::tip Quick note This process involves creating something called a "connected app" in Salesforce. Think of it as giving TurboDocx secure access to your Salesforce data โ€” and only the data you want to share. ::: ## Step 1: Create a Private Salesforce External Client App Time to get VIP access to your Salesforce data! ๐ŸŽญ This step guides you through creating a new external client app in Salesforce, which will serve as the secure bridge for your TurboDocx application. Think of it as getting backstage passes to your very own Salesforce concert! ๐ŸŽซ ### Log in to Salesforce 1. **Open your web browser** and go to [salesforce.com](https://salesforce.com) - Use Chrome, Firefox, Safari, or Edge 2. **Log into your Salesforce account** - Use your normal email and password with appropriate administrative privileges - If you forgot your password, there's a "Forgot Password?" link (we've all been there!) ![Salesforce Login Screen](/img/salesforce-integration/Login_Window.png) ### Navigate to Setup Home 3. **Find the Setup gear** in the top right corner - It looks like a little wheel with teeth โš™๏ธ - It's located next to your profile picture icon on the home page ![Setup Icon and Menu](/img/salesforce-integration/Setup_Icon_and_Menu.png) 4. **Click on "Setup"** - Select "Setup" from the dropdown menu - You will be navigated to the Setup Home page ![Salesforce Setup Home Page](/img/salesforce-integration/Setup_Home_Page.png) ### Go to App Manager 5. **Navigate through the left sidebar menu** - From the Setup Home page, scroll down in the left sidebar - Navigate to: **Platform Tools > Apps > App Manager** ![Navigation to App Manager in Sidebar](/img/salesforce-integration/Navigation_to_App_Manager.png) ### Create a New External Client App 6. **Click "New External Client App"** - On the App Manager screen, look for the "New External Client App" button - Click this button (not "New Lightning App") ![App Manager Screen with New External Client App Button](/img/salesforce-integration/New_External_Client_App_Button.png) ### Configure Basic Information 7. **Fill in the Basic Information section**: - **External Client App Name**: Type "TurboDocx Integration App" or "TurboDocx Document Generator" - **API Name**: This will auto-populate based on the App Name, but you can adjust if needed - **Contact Email**: Enter a relevant contact email address - **Distribution State**: Set this to "Local" ![Basic Information Section Fields](/img/salesforce-integration/Basic_Information.png) :::tip Pro Tip Choose an app name you'll remember six months from now. "App123" might seem clever today, but future you will not be amused! ๐Ÿ˜ ::: ### Configure API Settings 8. **Set up OAuth Settings** - Proceed to the "API Settings" section - **Enable OAuth Settings**: Check this box - **Callback URL**: Enter `https://api.turbodocx.com/oauth/salesforce/callback` as the callback URL ![API Settings with OAuth Enabled](/img/salesforce-integration/OAuth_Enabled.png) 9. **Select OAuth Scopes** - In the **Selected OAuth Scopes** section, select the following scopes: - `Access unique user identifiers (openid)` - `Manage user data via APIs (api)` - `Manage user data via Web browsers (web)` - `Perform requests at any time (refresh_token, offline access)` ![OAuth Scopes Selected](/img/salesforce-integration/OAuth_Scopes_Selected.png) :::tip Attention to Detail Required You'll be adding several different permissions. It's like checking off a grocery list โ€” but necessary for the feast ahead! ๐Ÿ›’ ::: 10. **Configure Flow Enablement** - In the "Flow Enablement" section under OAuth settings, make sure only the following checkbox is ticked - **Enable Authorization Code and Credentials Flow** ![Flow and Enablement Settings](/img/salesforce-integration/Flow_Enablement_settings.png) 11. **Configure Security** - In the "Security" section under OAuth settings, make sure only the following checkbox is ticked: - **Issue JSON Web Token (JWT)-based access tokens for named users** ![Security Settings](/img/salesforce-integration/Security_Section.png) 12. **Create the External Client App** - Click "Create" to create your external client app - Take a moment to admire your handiwork first! ![Save External Client App](/img/salesforce-integration/create_app.png) :::tip Achievement Unlocked: App Creator! ๐Ÿ† Look at you go! You've successfully created your Salesforce External Client App. You're basically a mini developer now! ๐Ÿ‘ฉโ€๐Ÿ’ป Now we need to configure its policies and get those important credentials. โšก ::: ## Step 2: Configure Connected App Policies and Retrieve Credentials After creating the app, you need to adjust its access policies and retrieve the necessary credentials for TurboDocx. ### Access App Details Page 1. **Navigate to your app's detail page** - You should be automatically redirected to the detail page of the app you just created as soon as you hit the create button - If not, navigate to External Client App Manager **(Platform Tools > Apps > External Client App > External Client App Manager)** and click on the name of your newly created app ![Connected App Detail Page](/img/salesforce-integration/Connected_app_details_page.png) ### Edit Policies 2. **Locate the Policies section** - On the app's detail page, find the "Policies" section - Click the "Edit" button located below the policies section ![Policies Section with Edit Button](/img/salesforce-integration/policies_section.png) 3. **Adjust OAuth Policies** - In the "Edit" view, locate the OAuth policies and configure the following settings: - **Permitted Users**: Select **"All users may self-authorize"** - **Named User JWT-Based Access Token Settings**: Select **30 minutes** for token timeout - **Refresh Token Policy**: Select **"Refresh token is valid until revoked"** - **IP Relaxation**: Select **"Relax IP restrictions"** ![OAuth Policies Configuration](/img/salesforce-integration/OAuth_policies.png) 4. **Save Changes** - Click "Save" to apply the policy changes ![Save Button](/img/salesforce-integration/Save_policies.png) ### Retrieve Consumer Key and Secret 5. **Find Settings section** - On the same app details page, Navigate to the "Settings" section - Here you don't need to edit anything as we have already configured it while creating the app ![Settings Section](/img/salesforce-integration/connected_app_settings_section.png) 6. **Navigate to the OAuth Settings part under the settings section** - You will now see a button of **Consumer Key and Secret** - Click on this button ![Consumer Key and Secret Button](/img/salesforce-integration/Consumer_key_and_secret_button.png) 7. **Complete identity verification** - You will be prompted to verify your identity via an OTP being sent to your registered email - Complete this verification step ![Identity Verification Prompt](/img/salesforce-integration/Identity_Verification_page.png) 8. **Copy your credentials** - After successful verification, your Consumer Key and Consumer Secret will be displayed - Copy both the **Consumer Key** and **Consumer Secret** - these credentials are essential for connecting your TurboDocx application to Salesforce ![Consumer Key and Secret Display](/img/salesforce-integration/Consumer_key_and_secret_page.png) :::warning Handle With Care ๐Ÿ” These consumer keys are like VIP backstage passes to your Salesforce show โ€” they let TurboDocx read only the data you've approved, but you definitely don't want random people crashing your party! ๐ŸŽ‰ Keep them private, and if they ever get shared by accident, no worries โ€” you can always generate fresh ones right here. It's like getting a new set of keys! ๐Ÿ”‘ ::: ## Step 3: Configuring TurboDocx Now we'll connect your shiny new Salesforce external client app to TurboDocx. This is like introducing two friends who are perfect for each other at a party โ€” and watching the magic happen! ๐ŸŽ‰โœจ ### Navigate to TurboDocx Settings 1. **Go to your TurboDocx dashboard** ๐Ÿ“Š - Log in if you haven't already (we'll wait!) ![TurboDocx Main Dashboard](/img/salesforce-integration/Turbodocx_dashboard.png) 2. **Click on "Settings"** - Look for the gear icon or "Settings" text - Usually in the top menu or sidebar ![Settings Menu](/img/salesforce-integration/turbodocx_settings_page.png) 3. **Click on "Organization Settings"** - This might be in a dropdown or separate tab - If you can't find it, try looking for "Integrations" or "Connected Apps" ![Organization Settings Page](/img/salesforce-integration/Turbodocx_org_page.png) ### Configure Salesforce Integration 4. **Find the Salesforce section** - Look for the Salesforce logo or "Salesforce Integration" - It might be in a list with other integrations ![Salesforce Integration Section](/img/salesforce-integration/Salesforce_integration_page.png) 5. **Click "Configure Salesforce"** ๐Ÿš€ - A popup or form will appear - This is where the magic happens! Time to make these two apps best friends! โœจ๐Ÿ‘ฏโ€โ™€๏ธ ![Configuration Button](/img/salesforce-integration/configure_salesforce_button.png) ![Configuration Modal](/img/salesforce-integration/configuration_modal.png) 6. **Enter your Consumer Key and Consumer Secret** - Copy the Consumer Key from your Salesforce connected app page and paste it here - Copy the Consumer Secret from your Salesforce connected app page and paste it in the Consumer Secret field ![Key Entry Form](/img/salesforce-integration/key_and_secret_entered.png) 7. **Click "Save Configuration"** - Cross your fingers (optional, but recommended!) ![Save Configuration Button](/img/salesforce-integration/Save_config_button.png) ### Establish the OAuth Flow for Salesforce 8. **Click "Connect to Salesforce"** - This button appears after you save your configuration - You'll be redirected to Salesforce to authorize the connection ![Connection Button](/img/salesforce-integration/connect_to_salesforce_button.png) 9. **Authorize TurboDocx in Salesforce** - Salesforce will ask you to log in and confirm the connection - Enter your username and password to login ### Sync Your Salesforce Data 10. **Click "Refresh Fields"** - This button appears after the connection test succeeds - It downloads all your custom Salesforce fields and data - It also tests if your connection works ![Field Refresh Button](/img/salesforce-integration/refresh_fields.png) 11. **Wait for the field sync** โณ - This can take 2-5 minutes depending on your Salesforce org size - Perfect time to check your email, grab a snack, or practice your victory dance! ๐Ÿ’ƒ๐Ÿฟ - Pro tip: The bigger your Salesforce org, the more impressive your setup skills! ๐Ÿ’ช :::tip Success Celebration ๐ŸŽŠ If you've made it this far, you deserve a pat on the back! You've successfully connected Salesforce to TurboDocx. That's no small feat โ€” you're basically a tech wizard now! ๐Ÿง™โ€โ™‚๏ธ Time for a victory dance! ๐Ÿ’ƒ๐Ÿ•บ ::: ## Step 4: Using Your Salesforce Integration Time to put your new integration to work! This is where the real magic happens โ€” turning your boring Salesforce data into beautiful, professional documents that'll make your colleagues go "WOW!" ๐Ÿคฉโœจ ### Creating Your First Document 1. **Go to document generation** - Look for "Create Document", "New Document", or similar - This is usually on your main dashboard ![Document Creation Page](/img/salesforce-integration/Create_document_button.png) 2. **Select Template** - Click on the template you want to work with ![Template Selection](/img/salesforce-integration/template_selection_page.png) 3. **Change your data source** - Click on the "Change Source" dropdown - Select "Change Resource" from the menu ![Source Change Dropdown](/img/salesforce-integration/source_change_dropdown.png) 4. **Go to the App Library** - Click on the "App Library" tab - This shows all your connected integrations ![App Library Interface](/img/salesforce-integration/app_library_interface.png) 5. **Select CRM category** - Look for "CRM" and click on it - This filters to show only CRM integrations ![CRM Category Selection](/img/salesforce-integration/CRM_category_selection.png) 6. **Choose Salesforce** - Click on "Salesforce" (you should see the Salesforce logo) - It should show as "Connected" ![Salesforce Selection](/img/salesforce-integration/Salesforce_selection.png) 7. **Click "Continue"** - This takes you to the Salesforce agent interface ![Continue Button](/img/salesforce-integration/salesforce_continue_button.png) ### Using the Salesforce Agent 8. **Select your records** (optional but helpful) - Click "Select Records" to choose specific accounts, opportunities, contacts and many other fields - This helps the AI focus on the right data ![Record Selection Interface](/img/salesforce-integration/record_selection_interface.png) 9. **Choose relevant records** - Click on accounts, opportunities, contacts or other fields relevant to your document - Selected items will be highlighted - Click "Save" to confirm your record selection ![Record Selection Process](/img/salesforce-integration/record_selection_process.png) 10. **Give instructions to the AI** ๐Ÿค– - Type what kind of document you want in plain English (no tech jargon needed!) - Be specific about what you want to create - Sit back, relax, and watch the magic happen! โœจ - Generation typically takes 30 seconds to 2 minutes (perfect time for a coffee sip! โ˜•) ![Prompt Input Interface](/img/salesforce-integration/prompt_input_interface.png) **Example prompts:** - "Create a professional proposal section for the selected opportunity using the account's information" - "Generate a follow-up slide summarizing our recent meeting with this account" - "Create a company overview report using the selected account data" - "Draft a project kickoff overview for the selected opportunity and contacts" 11. **Review your document** ๐Ÿ‘€ - Check that all the information looks correct - Make any necessary edits - Marvel at your personalized, professional document and do a little happy dance! ๐Ÿ’ƒ๐Ÿ•บ :::tip Pro Document Tips - Be specific in your instructions โ€” "Create a proposal" vs. "Create a detailed Q3 marketing proposal section for ABC Corp with pricing and timeline" - Select the right records โ€” more relevant data = better documents - Don't be afraid to regenerate if the first attempt isn't perfect - Save successful prompts for future use! ::: ## Troubleshooting ๐Ÿค” Even the best-laid plans sometimes go awry (Murphy's Law is real, folks!). Don't worry โ€” we've got your back! Here are solutions to common issues: ### "I Can't Find the Setup Menu in Salesforce" **Solution**: - Look in the top right corner of your Salesforce interface - Click on your profile picture or the gear icon - Select "Setup" from the dropdown menu - If you still can't find it, you might need System Administrator permissions ### "I Can't Find 'New External Client App'" **Solution**: - Make sure you're in App Manager (Platform Tools > Apps > App Manager) - Look for "New External Client App" button, not "New Lightning App" - If you don't see this option, you might need System Administrator permissions - Some Salesforce orgs might have different permission requirements ### "Invalid Consumer Key/Secret" Error **Solution**: - Double-check that you copied the entire key and secret (they're usually quite long) - Make sure there are no extra spaces at the beginning or end - Verify your Salesforce external client app is still active - Complete the identity verification step when accessing "Manage Consumer Details" - If all else fails, create a new external client app and get fresh keys ### "Permission Denied" Error **Solution**: - Check that you added all the required OAuth scopes to your Salesforce external client app - Verify you selected: OpenID, API, Web, and Refresh token scopes - Make sure you're a System Administrator in your Salesforce org - Verify the external client app is enabled and policies are configured correctly ### "No Records Found" in TurboDocx **Solution**: - Make sure you have actual data in your Salesforce org (accounts, opportunities, contacts) - Click "Refresh Fields" again in your organization settings - Check that your Salesforce external client app has the right permissions and policies configured ### "The Agent Doesn't Understand My Instructions" **Solution**: - Be more specific in your prompts - Use simpler language - Include the type of document you want (email, proposal, report, etc.) - Try selecting more specific records :::tip When All Else Fails ๐ŸŽ† If you're still stuck, don't panic! Take a deep breath โ€” you've got this! ๐Ÿ’ช Take a screenshot of any error messages, note exactly what step you're on, and contact our support team. We're here to help, not judge your tech skills (we've all been there!). Think of us as your friendly tech support sidekicks! ๐Ÿค๐Ÿฆพ ::: ## Security and Privacy Your data security is important to us (and should be to you too!): ### How Your Data is Protected - **Secure Authentication**: We use OAuth 2.0 (fancy industry-standard security) - **Limited Permissions**: TurboDocx only gets permission to read your data, not change it - **Encrypted Transmission**: All data transfers are encrypted (like sending a letter in a locked box) ### Best Practices - **Keep Your Keys Secret**: Don't share your consumer key and secret with anyone - **Regular Reviews**: Periodically check which integrations have access to your data - **Monitor Connected Apps**: Regularly review connected apps in your Salesforce org ## Tips for Success ### Getting the Best Results **Keep Your Salesforce Data Clean**: - Use consistent naming conventions - Fill in important fields (account info, opportunity values, etc.) - Keep your data up-to-date **Write Clear Instructions**: - Be specific about what you want - Mention the type of document - Include any special requirements **Select the Right Records**: - Choose records that are relevant to your document - Don't select too many records at once - Quality over quantity! ### Advanced Tips **For Better Proposals**: - Select the account, opportunity, and contact records - Include opportunity value and close date information - Mention specific products or services **For Better Reports**: - Select relevant accounts and opportunities - Include date ranges if applicable - Specify the type of analysis you want **For Better Follow-ups**: - Select recent meeting attendees - Include opportunity or project context - Mention next steps or action items ## What's Next? ๐ŸŽ† Congratulations, integration superstar! You've successfully: - โœ… Created a Salesforce external client app (you're basically a developer now! ๐Ÿ‘ฉโ€๐Ÿ’ป) - โœ… Configured its policies and retrieved credentials (security expert: level unlocked! ๐Ÿ”’) - โœ… Connected it to TurboDocx (networking ninja: mastered! ๐Ÿฅท) - โœ… Generated your first document (content creation wizard: achieved! ๐Ÿง™โ€โ™€๏ธ) ### Now You Can: ๐ŸŽ‰ - Create personalized proposals in minutes instead of hours (time saver level: EXPERT! โฑ๏ธ) - Build comprehensive reports using your CRM information (data wizard status: UNLOCKED! ๐Ÿ“Š) - Automate document creation for your entire team (team hero achievement: EARNED! ๐Ÿฆพ) ### Next Steps: ๐Ÿš€ 1. **Train your team** on being a prompting pro (share your newfound expertise!) 2. **Create document and presentation templates** for common use cases (you're basically a template architect now!) 3. **Experiment with different AI prompts** to find what works best (become the AI whisperer of your office! ๐Ÿค–๐Ÿ—ฃ๏ธ) :::tip Final Words of Wisdom ๐ŸŽ“ Remember, you're not just creating documents or presentations โ€” you're creating more time for yourself by automating repetitive tasks. Every minute saved on copy-pasting customer data is a minute you can spend on more important things (like actually talking to customers, or grabbing that extra cup of coffee! โ˜•). You're officially a productivity ninja now! ๐ŸŽ‰๐Ÿฅท ::: ## Getting Help **If you need assistance:** 1. **Check this guide first** (you'd be surprised how often the answer is right here!) 2. **Take screenshots** of any error messages 3. **Note the exact step** where you got stuck 4. **Contact our TurboDocx support team** with the details **Remember**: There's no such thing as a bad question. We've all been there, and we're here to help you succeed! You're part of the TurboDocx family now! ๐Ÿ’ช๐Ÿ  --- _Happy document generating, integration champion! May your proposals be persuasive, your reports be comprehensive, your follow-ups be timely, and your coffee always be hot! โ˜•๐Ÿš€โœจ_ --- # Microsoft Teams Integration ๐Ÿš€ Coming Soon Transform your Microsoft Teams meetings into professional documents and presentations with AI-powered automation. ## What's Coming We're actively developing a comprehensive Microsoft Teams integration that will revolutionize how you handle meeting documentation and follow-ups. Here's what you can expect: ### ๐ŸŽฏ Planned Features ๐Ÿ“„ Meeting Documentation Convert Teams meeting transcripts into formatted documents Generate meeting minutes with action items Create follow-up reports automatically Extract key decisions and takeaways ๐Ÿ“Š Presentation Generation Turn discovery calls into client presentations Create pitch decks from meeting discussions Generate training materials from sessions Build project proposals from requirement gatherings ๐Ÿค– AI-Powered Automation Intelligent content extraction from transcripts Smart formatting and structuring Context-aware document generation Automated workflow triggers ๐Ÿ”„ Seamless Integration Direct access to Teams cloud recordings OAuth-based secure authentication Real-time transcript processing Multi-tenant support ### ๐ŸŽจ Document Types You'll Be Able to Create **๐Ÿ“‹ Business Documents** - Meeting summaries and action items - Project status reports - Client consultation notes - Team retrospective documents **๐Ÿ“ˆ Sales & Marketing Materials** - Customer discovery presentations - Sales proposal documents - Product demo follow-ups - Marketing campaign briefs **๐ŸŽ“ Training & Education** - Workshop documentation - Training session summaries - Educational content creation - Knowledge base articles **๐Ÿ’ผ HR & Operations** - Interview documentation - Team meeting notes - Process documentation - Compliance reports ## Why Teams Integration Matters โšก Accelerate Post-Meeting Workflows Eliminate manual note-taking and document creation after every Teams meeting ๐ŸŽฏ Improve Meeting ROI Transform every Teams meeting into actionable, professional deliverables ๐Ÿค Enhance Team Collaboration Create consistent documentation standards across all Teams meetings ๐Ÿ“Š Leverage Your Microsoft Investment Maximize the value of your Teams platform with intelligent document automation ## Stay Updated ### ๐Ÿ“ฌ Get Notified When Teams Integration Launches Want to be among the first to know when Microsoft Teams integration becomes available? We'll keep you updated on our progress and let you know as soon as it's ready for use. **Contact our team to:** - Get early access notifications - Provide input on feature priorities - Schedule a preview demonstration - Discuss your specific Teams integration needs ๐Ÿ“ง Email: team@turbodocx.com ๐Ÿ’ฌ Subject: "Teams Integration Updates" ## Technical Preview ### ๐Ÿ”ฌ Beta Testing Program We're looking for organizations to participate in our Teams integration beta testing program. Beta participants will get: - **Early access** to Teams integration features - **Direct influence** on feature development - **Priority support** during implementation - **Reduced pricing** for early adopters **Requirements for beta participation:** - Active Microsoft Teams usage with cloud recording - Willingness to provide feedback and testing Interested in beta testing? Apply for Beta Access --- ๐Ÿš€ The Future of Meeting Documentation Microsoft Teams integration will transform how your organization handles meeting follow-ups, documentation, and collaboration workflows. Stay tuned for updates on availability and beta program announcements. --- ## Wrike Integration # Automate Document Generation from Wrike Projects TurboDocx integrates with Wrike to automatically generate professional documents, proposals, and presentations directly from your project management data. When you change a task status in Wrike, TurboDocx can automatically create and attach documents to your projects. ## What You Can Create - **๐Ÿ“„ Statements of Work (SOWs)**: Generate comprehensive SOWs from project folders with timelines and deliverables - **๐Ÿ’ผ Project Proposals**: Create proposals from opportunity data in Wrike - **๐Ÿ“Š Status Reports**: Automatically generate project status reports from task data - **๐Ÿ“‹ Meeting Summaries**: Turn Wrike tasks into professional meeting documentation - **๐Ÿš€ Client Deliverables**: Generate client-facing documents from project information - **๐Ÿ“ˆ Executive Summaries**: Create management reports from Wrike folder data ## Before You Begin :::tip Not a Wrike Admin? This guide walks you through the entire setup process step-by-step. If you can create a task in Wrike, you can set this up! ๐ŸŽฏ ::: You'll need: - Admin access to your Wrike workspace - Admin access to your TurboDocx organization - About 10-15 minutes - A template ready in TurboDocx - Postman or similar tool for initial Webhook Setup for API calls ## How It Works The Wrike integration uses a **status-triggered workflow**: 1. You set up a webhook in Wrike that monitors specific folders or projects 2. When a task status changes to a trigger status (like "Generate Document" or "Send for Signature"), Wrike notifies TurboDocx 3. TurboDocx automatically generates the document using your template and Wrike data 4. The finished document is attached back to the Wrike task ## Step 1: Create and Configure Your Template First, create a template in TurboDocx that will be used for document generation. :::tip New to TurboDocx Templates? See our [How to Create a Template](../TurboDocx%20Templating/How%20to%20Create%20a%20Template.md) guide for detailed instructions on creating templates. ::: ### A. Create Your Template 1. **Log into TurboDocx** 2. **Navigate to Templates** 3. **Create a new template** or select an existing one 4. **Add variables** that will be populated from Wrike data :::tip Template Variables Your template can include variables like `{CompanyName}`, `{ProjectTitle}`, `{TaskDescription}`, etc. The AI will automatically populate these from Wrike data. ::: ### B. Configure Default Values and AI Smart Prompts (Optional) ![Template Default Values and AI Values](/img/wrike-integration/TurboDocxTemplateDefaultValuesAndAIValues.png) 1. **Open your template** in TurboDocx 2. **Click on "Edit Template Preferences"** 3. **Fill in the Default Values** for any variables that should have fallback content 4. **Configure the Smart Prompt Template** to customize how AI generates content from Wrike data 5. **Test the AI generation** to ensure it works as expected :::info Using TurboSign for Digital Signatures? If you plan to use the [TurboSign signature workflow](#signature-workflow) with this template, you need to include signature anchor fields in both your document template AND in the default values: **Required Signature Anchor Fields:** - `{SalesSignerName}`, `{SalesDate}`, `{SalesSignerSignature}` - `{ClientSignerName}`, `{ClientDate}`, `{ClientSignerSignature}` **Setup Instructions:** 1. **In your document template**, add these fields where you want the signature elements to appear (usually at the end of your document) 2. **In TurboDocx Default Values**, set each anchor field to map to itself: - Variable: `{SalesSignerName}` โ†’ Default Value: `{SalesSignerName}` - Variable: `{SalesDate}` โ†’ Default Value: `{SalesDate}` - Variable: `{SalesSignerSignature}` โ†’ Default Value: `{SalesSignerSignature}` - Variable: `{ClientSignerName}` โ†’ Default Value: `{ClientSignerName}` - Variable: `{ClientDate}` โ†’ Default Value: `{ClientDate}` - Variable: `{ClientSignerSignature}` โ†’ Default Value: `{ClientSignerSignature}` **Why this is needed:** When TurboDocx generates the document from Wrike, it needs to preserve these anchor fields as literal text (not replace them with data from Wrike). By setting the default value to the same field name, the anchor remains in the generated document for TurboSign to locate and replace with actual signature elements. See the [TurboSign Documentation](../TurboSign/Setting%20up%20TurboSign.md) for more details on signature workflows. ::: ### C. Note Your Template ID 1. **Open your template** in TurboDocx 2. **Look at the URL** - it will contain your template ID 3. **Copy the template ID** (you'll need this for Step 4) **Example:** ``` URL: https://app.turbodocx.com/templates/bad30fa3-cf34-440f-8029-3410d2ff52e6 Template ID: bad30fa3-cf34-440f-8029-3410d2ff52e6 ``` ## Step 2: Configure Wrike Integration in TurboDocx You need to set up both your Wrike access token and create a special API key for webhook verification. ### A. Get Your Wrike Access Token 1. **Log into Wrike** 2. **Go to Settings โ†’ Apps & Integrations โ†’ API** 3. **Create a new permanent access token** or use an existing one 4. **Copy the token** - you'll need it in the next step For detailed instructions on creating a Wrike API token, see [Wrike's official API documentation](https://help.wrike.com/hc/en-us/articles/210409445-Wrike-API). ### B. Configure Wrike in TurboDocx ![Setup Wrike API Key in TurboDocx](/img/wrike-integration/SetupWrikeAPIKeyInTurboDocx.png) 1. **Log into TurboDocx** 2. **Go to Settings โ†’ Organization Settings โ†’ Integrations** 3. **Select "Wrike"** from the integrations list 4. **Paste your Wrike access token** from Step 2A 5. **Save the configuration** This stores your Wrike access token so TurboDocx can communicate with the Wrike API. ### C. Create the Webhook API Key ![Wrike API Key Contributor](/img/wrike-integration/WrikeAPIKeyContributor.png) 1. **Go to Settings โ†’ Organization Settings** 2. **Click on "API Keys"** in the left sidebar 3. **Click "Create New API Key"** 4. **Set the name to** `wrikewebhook` (this exact name is required - no dash, all one word!) 5. **Select a role**: - **Contributor**: Can create and modify documents (recommended) - **User**: Can create documents but not modify templates 6. **Click "Create"** :::caution Important: Exact Name Required The API key MUST be named exactly `wrikewebhook` (lowercase, no spaces, no dash, all one word). The integration won't work with any other name. ::: ### D. Save Your API Key ![Capture Organization ID](/img/wrike-integration/CaptureOrgId.png) 1. **Copy the API key** that appears (you'll only see this once!) 2. **Store it securely** - you'll need it for Step 3 3. **Note your Organization ID** from the settings page ## Step 3: Get Your Wrike Folder ID You need to identify which Wrike folder, space, or project to monitor for status changes. ### A. Get the Folder Permalink 1. **Open Wrike** in your browser 2. **Navigate to the folder or project** you want to monitor 3. **Right-click on the folder name** and select **"Copy Link"** (or click the share icon) 4. **Paste the link** somewhere - it will look like: ``` https://www.wrike.com/open.htm?id=1490378047 ``` ### B. Get the Folder ID via API ![Get Folder by Permalink](/img/wrike-integration/get-folder-by-permalink.png) Use the Wrike API to convert the permalink to a folder ID: 1. **Open Postman** (or your browser) 2. **Create a GET request** to: ``` https://www.wrike.com/api/v4/folders?permalink=YOUR_PERMALINK_HERE ``` 3. **Set up authentication**: - Type: Bearer Token - Token: Your Wrike API token from Step 2A 4. **Replace `YOUR_PERMALINK_HERE`** with your copied permalink **Example Request:** ``` https://www.wrike.com/api/v4/folders?permalink=https://www.wrike.com/open.htm?id=1490378047 ``` 5. **Send the request** and look for the folder ID in the response: ```json { "data": [ { "id": "IEAAAAAAI4567890", "title": "Your Folder Name", ... } ] } ``` 6. **Copy the folder ID** (e.g., `IEAAAAAAI4567890`) - you'll need this for Step 4 :::tip Pro Tip You can create different webhooks for different folders and templates. For example, one webhook for sales proposals and another for project SOWs. ::: ## Step 4: Create a Wrike Webhook Currently, you need to use Postman (or similar API tool) to create the webhook. We're working on adding this to the TurboDocx UI. ### A. Create Webhook via Postman ![Postman Webhook Creation](/img/wrike-integration/create-webhook.png) 1. **Open Postman** (or download it from [postman.com](https://www.postman.com/downloads/)) 2. **Create a new POST request** to: ``` https://www.wrike.com/api/v4/folders/{WRIKE_FOLDER_ID}/webhooks ``` 3. **Set up authentication**: - Type: Bearer Token - Token: Your Wrike API token from Step 2A 4. **Configure the Query Parameters**: | Parameter | Value | Description | |-----------|-------|-------------| | `events` | `[ProjectStatusChanged,TaskStatusChanged]` | The Wrike events to monitor. TurboDocx listens for status changes. | | `recursive` | `true` | Monitor all tasks within the folder and its subfolders. | | `hookUrl` | `https://api.turbodocx.com/integrations/wrike/webhook/StatusTriggeredWorkflow/{YOUR_ORG_ID}/{YOUR_TEMPLATE_ID}` | The TurboDocx webhook endpoint URL. | | `secret` | `{YOUR_WRIKE_WEBHOOK_API_KEY}` | Your `wrikewebhook` API key from Step 2D for secure verification. | 5. **Replace the placeholders**: - `{WRIKE_FOLDER_ID}`: The Wrike folder/space to monitor (from Step 3) - `{YOUR_ORG_ID}`: Your TurboDocx organization ID (from Step 2D) - `{YOUR_TEMPLATE_ID}`: Your template ID (from Step 1D) - `{YOUR_WRIKE_WEBHOOK_API_KEY}`: The `wrikewebhook` API key (from Step 2D) ### B. Example Request Full URL with all parameters: ``` https://www.wrike.com/api/v4/folders/IEAAAAAI4567890/webhooks?events=[ProjectStatusChanged,TaskStatusChanged]&recursive=true&hookUrl=https://api.turbodocx.com/integrations/wrike/webhook/StatusTriggeredWorkflow/abc123-org-id/def456-template-id&secret=TDX-12345 ``` :::tip Parameter Details - **events**: Include both `ProjectStatusChanged` and `TaskStatusChanged` to ensure the webhook triggers for all relevant status updates - **recursive**: Setting this to `true` ensures all tasks in subfolders are monitored, not just the top-level folder - **hookUrl**: This tells Wrike where to send webhook notifications when events occur - **secret**: This is used to cryptographically verify webhook requests are authentic ::: ### C. Send the Request 1. **Click "Send"** in Postman 2. **Check the response** - you should see a webhook ID 3. **Save the webhook ID** for future reference :::tip Success Check If the request succeeds, you'll get a 200 response with a webhook object containing your webhook ID. If you get an error, double-check your Wrike API token and request body. ::: ## Step 5: Configure Wrike Custom Statuses For the webhook to trigger document generation, you need to set up custom statuses in Wrike. ### A. Create Custom Workflow Statuses 1. **In Wrike, go to Settings โ†’ Workflows** 2. **Select the workflow** for your project type 3. **Add custom statuses** for document automation: - `Generate Document` - Triggers document generation - `Generate SOW` - Alternative trigger for SOW generation - `Send for Signature` - Triggers signature workflow For detailed instructions on creating custom workflow statuses in Wrike, see [Workflows in Wrike](https://help.wrike.com/hc/en-us/articles/210322785-Workflows-in-Wrike). ### B. Allowed Status Triggers TurboDocx listens for these status changes (case-insensitive): **Document Generation Statuses:** - `generate document` - `generate sow` **Signature Workflow Status:** - `send for signature` When a task changes to any of these statuses, TurboDocx will automatically trigger. :::info Event Types The webhook also filters for specific Wrike event types: - `taskstatuschanged` - When task status changes - `taskcommentadded` - When a comment is added to a task ::: ## Step 6: Test the Integration (Magic Time! โœจ) Now let's test the entire workflow to see the magic happen! ### A. Create a Test Task in Wrike 1. **Open the Wrike folder** you configured in the webhook 2. **Create a new task** with some project details 3. **Add a description** with relevant information (the AI will use this!) ### B. Trigger Document Generation ![Select Generate SOW Status](/img/wrike-integration/SelectGenerateSoWStatus.png) 1. **Change the task status** to one of the trigger statuses: - "Generate Document" or - "Generate SOW" 2. **Wait 30 seconds to 2 minutes** (depending on document complexity) 3. **Check the task attachments** - your generated document should appear! ![Wrike SOW Generated Comment](/img/wrike-integration/WrikeSOWGeneratedComment.png) :::tip Success Indicators - The document appears as an attachment on the Wrike task - The task status may automatically update to show generation completed - You can download and review the generated document ::: ## Signature Workflow TurboDocx also supports a signature workflow for Wrike tasks. ### How It Works ![Send for Signature in Wrike](/img/wrike-integration/SendForSignatureWrike.png) 1. **Change a task status to** `Send for Signature` 2. **TurboDocx fetches the most recent attachment** from the task 3. **TurboDocx extracts signature recipients** from Wrike custom fields 4. **TurboDocx sends it through the TurboSign workflow** for digital signatures ### Required Wrike Custom Fields ![Signature Fields in Wrike](/img/wrike-integration/SignatureFieldsInWrike.png) TurboSign for Wrike is configured by default to look for the following custom fields on your Wrike task or folder: | Custom Field Name | Required | Description | |-------------------|----------|-------------| | `๐Ÿ” Seller email` | **Yes** | Email address of the seller/vendor signer | | `๐Ÿ” Customer email` | **Yes** | Email address of the customer/client signer | | `๐Ÿ” Seller name` | No | Name of the seller/vendor signer (defaults to "Seller") | | `๐Ÿ” Customer name` | No | Name of the customer/client signer (defaults to "Customer") | :::caution Required Custom Fields The signature workflow will fail if the required custom fields are missing. Make sure to add these custom fields to your Wrike workflow and populate them before triggering the signature workflow: - `๐Ÿ” Seller email` or `Seller email` (required) - `๐Ÿ” Customer email` or `Customer email` (required) The ๐Ÿ” (lock) emoji is optional but recommended to help identify signature-related fields in Wrike. ::: :::tip Field Name Flexibility The system accepts field names with or without the ๐Ÿ” emoji prefix. Both `๐Ÿ” Seller email` and `Seller email` will work, but using the ๐Ÿ” emoji helps identify signature-related fields in Wrike. ::: ### Required Document Fields Your document template must include the following anchor fields for TurboSign to place signature elements: - `{SalesSignerName}` - Where the seller's name will appear - `{SalesDate}` - Where the seller's signature date will appear - `{SalesSignerSignature}` - Where the seller's signature field will be placed - `{ClientSignerName}` - Where the customer's name will appear - `{ClientDate}` - Where the customer's signature date will appear - `{ClientSignerSignature}` - Where the customer's signature field will be placed :::info Prerequisites for Signature Workflow - TurboSign must be configured in your TurboDocx organization - The Wrike task must have at least one document attachment - The document must contain all required signature anchor fields - The Wrike task/folder must have the required custom fields populated ::: ## Troubleshooting ### Wrike API Key Not Found **Cause:** The `wrikewebhook` API key doesn't exist in your TurboDocx organization. **Solution:** 1. Go to TurboDocx Settings โ†’ Organization Settings โ†’ API Keys 2. Verify an API key named exactly `wrikewebhook` (no dash, all one word) exists 3. If not, create one following Step 2C 4. **Common mistake:** Make sure the key is named `wrikewebhook` not `wrike-webhook` (no dash!) ### Invalid Webhook Signature **Cause:** The webhook secret doesn't match the API key. **Solution:** 1. Verify the `secret` in your webhook matches the `wrikewebhook` API key exactly 2. Delete the webhook in Wrike and recreate it with the correct secret 3. Make sure you copied the full API key without extra spaces ### Invalid Webhook Payload **Cause:** Wrike sent an unexpected payload format. **Solution:** - This is usually a Wrike configuration issue - Verify your webhook is set up for the correct event types - Check the Wrike webhook logs in Wrike Settings โ†’ Webhooks ### Status Not Supported **Cause:** The task status changed to a status that TurboDocx doesn't monitor. **Solution:** - This is normal behavior - the webhook only triggers for specific statuses - Make sure you're using one of the allowed statuses: `generate document`, `generate sow`, or `send for signature` - Check your Wrike workflow configuration ### Document Generation Takes Too Long **Cause:** Complex templates or AI generation can take 1-2 minutes. **Solution:** - Wait at least 2 minutes before assuming failure - Simplify your template or reduce the number of AI-generated variables ### Document Not Attached to Wrike Task **Cause:** Generation succeeded but attachment failed. **Solution:** 1. Check that your Wrike API token has permission to add attachments 2. Verify the Wrike folder/task still exists :::tip Need Help? Join our [Discord community](https://discord.gg/turbodocx) for support! Our team and community members are ready to help you troubleshoot any issues. ๐Ÿš€ ::: ## Security and Privacy ### Best Practices - **Rotate API Keys Regularly**: Update your `wrikewebhook` API key every 90 days - **Use Contributor Role**: Only grant the minimum permissions needed - **Monitor Webhook Activity**: Review webhook logs in Wrike settings - **Secure Your Secrets**: Never commit API keys or secrets to version control ## Tips for Success ### Getting the Best Documents **Keep Wrike Data Clean:** - Use descriptive task titles and descriptions - Fill in custom fields with relevant project information - Add context in task comments (AI uses this!) **Optimize Your Templates:** - Create specific templates for different document types - Use AI variable generation for complex sections - Test templates before setting up webhooks **Use Descriptive Status Names:** - Make custom statuses clear: "Generate Client Proposal" vs. "Generate Document" - Document your workflow for team members - Consider different statuses for different document types ### Workflow Ideas **SOW Generation Workflow:** 1. Create project folder in Wrike 2. Add all deliverables as tasks 3. Move folder to "Generate SOW" status 4. TurboDocx generates comprehensive SOW from all tasks 5. Review and send to client **Proposal Automation:** 1. Create opportunity in Wrike 2. Add project details and pricing 3. Change status to "Generate Proposal" 4. Review AI-generated proposal 5. Change status to "Send for Signature" 6. Client receives signed proposal **Weekly Reporting:** 1. Create "Weekly Report" task 2. Link to relevant project tasks 3. Every Friday, change status to "Generate Document" 4. Auto-generated report appears in attachments ## What's Next? ๐ŸŽฏ Congratulations! You've successfully set up the Wrike integration. Now you can: โœ… Automatically generate documents from Wrike status changes โœ… Create SOWs, proposals, and reports without manual data entry โœ… Send documents for signature directly from Wrike โœ… Save hours every week on document generation ### Next Steps: 1. **Create multiple webhooks** for different project types or templates 2. **Train your team** on using the trigger statuses 3. **Build a template library** for common document types 4. **Set up custom workflows** in Wrike to streamline your processes --- ## FAQ ### Can I use multiple templates with the same Wrike folder? No, each webhook is tied to one template. However, you can create multiple webhooks for the same folder with different templates, and use different trigger statuses to determine which webhook fires. ### What happens if I delete the API key? All webhooks using that API key will stop working and return 404 errors. Create a new `wrikewebhook` key to restore functionality. ### Can I use this with Wrike tasks or only folders? Both! The webhook monitors a specific folder, but the status changes happen on tasks within that folder. You can also monitor entire spaces or projects. ### How do I know if document generation failed? If document generation fails, you won't see the document attached to your Wrike task. Join our [Discord community](https://discord.gg/turbodocx) for help troubleshooting any issues. ### Can the AI use data from multiple Wrike tasks? Yes! If you trigger from a folder, the AI can access all tasks within that folder. If you trigger from a task, it can access parent/child tasks as well. --- *May your documents generate themselves, your workflows automate effortlessly, and your Wrike projects always stay on track! ๐Ÿš€โœจ* --- # Zapier Integration The Zapier integration in TurboDocx enables you to connect your document generation workflow to thousands of apps and services through Zapier's powerful automation platform. This integration allows you to export TurboDocx deliverables and trigger automated workflows across any Zapier-supported application. ## Overview With the Zapier integration, you can seamlessly export your generated documents and data from TurboDocx to any of the 5,000+ apps supported by Zapier. This opens up endless possibilities for automating your document workflows and connecting TurboDocx to your existing business systems. ## Key Features ### Export to Any Zapier-Supported App - **CRM Systems**: Automatically send generated proposals to Salesforce, HubSpot, or Pipedrive - **Project Management**: Create tasks in Asana, Trello, or Monday.com when documents are generated - **Communication**: Send notifications through Slack, Microsoft Teams, or email when deliverables are ready - **Cloud Storage**: Automatically save documents to Google Drive, Dropbox, or OneDrive - **Database Systems**: Store document metadata in Airtable, Google Sheets, or other databases ### Automated Workflows - Trigger actions based on document generation events - Set up multi-step workflows that involve multiple applications - Create conditional logic based on document properties or content - Schedule automated document exports and distributions ## Common Use Cases ### Sales & Marketing - Generate proposals in TurboDocx and automatically send them to prospects via email - Create contracts and sync client data to your CRM system - Generate marketing materials and distribute them across multiple channels ### Operations & Project Management - Create project documentation and automatically create corresponding tasks in project management tools - Generate reports and send them to stakeholders via preferred communication channels - Synchronize document metadata with operational databases ### HR & Administration - Generate employee documents and automatically file them in HR systems - Create onboarding materials and trigger welcome sequences - Generate compliance documents and log them in tracking systems ## Getting Started The Zapier integration is available as part of TurboDocx's premium features. To set up and configure the Zapier integration for your organization: ### Contact Sales To enable the Zapier integration and discuss your specific automation needs: - **Email**: [team@turbodocx.com](mailto:team@turbodocx.com) - **Schedule a Demo**: Book a personalized demonstration to see how Zapier integration can streamline your workflows - **Custom Setup**: Our team can help design custom automation workflows tailored to your business processes ### What Our Team Will Help You With - **Integration Setup**: Complete configuration of the Zapier connection - **Workflow Design**: Custom automation workflows based on your specific needs - **Testing & Optimization**: Ensuring your integrations work seamlessly - **Training**: Comprehensive training for your team on managing Zapier automations - **Ongoing Support**: Dedicated support for troubleshooting and optimization ## Benefits ### Increased Efficiency - Eliminate manual document distribution and filing - Reduce time spent on repetitive tasks - Ensure consistent document workflows across your organization ### Enhanced Collaboration - Automatically notify team members when documents are ready - Sync document data across multiple platforms - Create unified workflows that span multiple applications ### Improved Accuracy - Reduce human error in document handling - Ensure consistent data entry across systems - Maintain audit trails of document lifecycle ## Technical Requirements - TurboDocx Enterprise or Premium plan - Active Zapier account (Basic or Premium recommended) - Administrative access to configure integrations - Access to target applications for integration setup ## Next Steps Ready to supercharge your document workflows with Zapier integration? Contact our sales team today to: 1. **Schedule a consultation** to discuss your specific automation needs 2. **See a live demo** of TurboDocx and Zapier working together 3. **Get a custom quote** based on your integration requirements 4. **Plan your implementation** with our integration specialists Transform your document generation process into a fully automated workflow that connects seamlessly with your existing business tools through the power of Zapier integration. --- ## Zoom Integration # Turn Your Zoom Meetings into Professional Documents & Presentations Transform your meeting recordings into professional documents automatically. TurboDocx's integration eliminates manual note-taking by converting meeting transcripts into polished deliverables, streamlining your post-meeting workflow. ## What You Can Create - **๐Ÿ“„ Meeting Summaries**: Convert discussions into formatted meeting minutes and action items - **๐Ÿ“Š Client Presentations**: Turn discovery calls into compelling presentation decks - **๐Ÿ“‹ Project Proposals**: Use requirement gathering sessions to create detailed proposals - **๐Ÿ“ Follow-up Reports**: Generate comprehensive meeting reports with key takeaways - **๐Ÿ’ผ Sales Materials**: Transform prospect calls into customized sales presentations - **๐Ÿ”„ Automated Workflows**: Connect meeting transcripts directly to your document templates ## Before You Begin To use the Zoom integration, you'll need: - A Zoom account with **cloud recording** enabled - Administrative access to create a Zoom app (or assistance from your IT team) - Meeting recordings stored in Zoom's cloud (local recordings are not accessible) :::tip If you're not sure whether you have cloud recording enabled, check with your Zoom administrator or look for the "Cloud" option when you start recording a meeting. ::: ## Step 1: Creating Your Zoom App The first step is to create a Zoom app that will allow TurboDocx to access your meeting transcripts. Don't worry - this is a one-time setup process that we'll walk you through step by step. ### Navigate to the Zoom Marketplace 1. Open your web browser and go to [https://marketplace.zoom.us](https://marketplace.zoom.us) 2. Click **"Sign In"** in the top right corner ![Zoom Marketplace Sign In](/img/zoom_integration/step1.png) 3. Sign in with your Zoom account credentials 5. You'll be taken to [https://marketplace.zoom.us/user/build](https://marketplace.zoom.us/user/build) ### Create a New App 1. In the top right corner, click the dropdown that says **"Develop"** 2. Select **"Build App"** from the dropdown ![Step 2: Build App selection](/img/zoom_integration/step2.png) 3. In the dialog that appears, select **"General App"** ![Step 3: General App selection](/img/zoom_integration/step3.png) 4. Click **"Create"** 5. **Rename your app to "TurboDocx"** ![Step 4: Rename app to TurboDocx](/img/zoom_integration/Step4RenameTurboDocx.png) :::info Why General App? We use a "General App" because it provides the specific permissions needed to access your cloud recordings safely and securely. ::: ### Configure Basic Information After creating your app, you'll be taken to the app configuration page. Let's set up the basic information first. #### Basic Information Tab 1. Make sure you're on the **"Basic Information"** tab 2. **Leave app as User Managed** - Ensure the app type remains set as "User Managed" ![Basic Information User Managed](/img/zoom_integration/Step5UserManaged.png) 3. Scroll down to **"App Credentials"** section 4. **Note down the Client ID and Client Secret** - You'll need these values when configuring TurboDocx ![App Credentials Section](/img/zoom_integration/Step6ClientIdAndSecret.png) :::tip Keep Your Credentials Safe Your Client Secret is like a password - never share it publicly or include it in emails. TurboDocx will store it securely once you enter it. ::: #### OAuth Information 1. Still on the Basic Information tab, scroll down to **"OAuth Information"** 2. For **"Redirect URL for OAuth"**, enter: ``` https://api.turbodocx.com/oauth/zoom/callback ``` 3. Under **"OAuth Allow List"**, add the following URLs (click "Add" for each one): ``` https://app.turbodocx.com ``` ![OAuth Allow List Configuration](/img/zoom_integration/oauth_allowlist.png) ### Configure Scopes Now we need to set up the permissions (scopes) that allow TurboDocx to access your cloud recordings. #### Scopes Tab 1. In the left bar, click on the **"Scopes"** button and navigate to the add scopes page ![Navigate to Scopes Section](/img/zoom_integration/NavigateToScopesSection.png) 2. Click **"Add Scopes"** button ![Click Add Scopes Button](/img/zoom_integration/clickaddscopesbutton.png) 3. In the search dialog that appears, search for: ``` List all cloud recordings for a user ``` Or look for the scope with this value: ``` cloud_recording:read:list_user_recordings ``` ![Type List Cloud Recordings For User](/img/zoom_integration/TypeListCloudRecordingsForUser.png) 4. **Add the scope** labeled "View your recordings" (with value `cloud_recording:read:list_user_recordings`) ![Select Scope and Press Done](/img/zoom_integration/SelectScopeandPressDone.png) 5. Click **"Done"** to save the configuration ## Step 2: Configuring TurboDocx ### ๐Ÿ”ง How to Configure Zoom in Organization Settings 1. Go to **Settings** ![Go to Settings](/img/zoom_integration/GoToSettings.png) 2. Click on **Organization Settings** ![Go to Organization Settings](/img/zoom_integration/GoToOrganizationSettings.png) 3. Scroll down to the **Zoom** section 4. Click **Configure Zoom** ![Click Configure Zoom](/img/zoom_integration/ClickConfigureZoom.png) 5. A Zoom Configuration pop-up will appear 6. Take the **Client ID** and **Client Secret** you obtained earlier, paste them into the appropriate fields, and click **Save Configuration** in the bottom right-hand corner ![Enter Client ID Secret and Press Save Configuration](/img/zoom_integration/enterclientidsecretandpresssaveconfiguration.png) ### Alternative: Inline Configuration Alternatively, you can configure Zoom integration directly when you first access transcript providers. When you navigate to the transcript providers section and select Zoom, you'll be prompted to enter your credentials if the integration hasn't been configured yet. Simply enter your Client ID and Client Secret in the configuration dialog that appears and save your settings. ## Step 3: Using Your Zoom Integration Congratulations! Your Zoom integration is now ready to use. Here's how to access your meeting transcripts and use them in your documents. ### Accessing Meeting Transcripts 1. Click the source dropdown and click **"Change Source"** 2. Go to the **App Library** tab 3. Click **"Transcript Providers"** ![Meeting Providers](/img/zoom_integration/MeetingProviders.png) 4. Click **"Zoom"** and then you should be able to click the transcript 5. You'll see a list of your recent cloud recordings with transcripts ![Transcripts Shown](/img/zoom_integration/TranscriptsShown.png) ## Troubleshooting If you're having trouble with your Zoom integration, here are some common issues and their solutions. ### "No Meetings Found" - **Cause**: No cloud recordings with transcripts available - **Solution**: Ensure your meetings are recorded to the cloud and have transcription enabled ### "Authentication Failed" - **Cause**: Incorrect credentials or expired authentication - **Solution**: - Double-check your Client ID and Client Secret - Try re-authenticating by clicking "Authenticate with Zoom" again ### "Permission Denied" - **Cause**: Required scope not properly configured - **Solution**: Verify that `cloud_recording:read:list_user_recordings` scope is added to your Zoom app :::tip Getting Help If you continue to experience issues: - Verify all steps in this guide have been completed - Check that your Zoom account has cloud recording enabled - Ensure you have meeting recordings stored in Zoom's cloud - Contact your TurboDocx support team for assistance ::: ## Security and Privacy Your data security and privacy are important to us. Here's how your information is protected when using the Zoom integration. ### How Your Data is Protected - **Secure Authentication**: TurboDocx uses OAuth 2.0, the industry standard for secure API access - **Limited Permissions**: The integration only requests access to read your cloud recordings - **Encrypted Transmission**: All data transfers are encrypted using industry-standard protocols ## Best Practices ### For Optimal Results - **Enable Transcription**: Always enable transcription when recording meetings to the cloud - **Use Clear Audio**: Ensure good audio quality for more accurate transcripts - **Descriptive Meeting Names**: Use clear, descriptive names for your meetings to easily identify them later - **Regular Cleanup**: Periodically review and organize your cloud recordings ### Meeting Recording Tips - Start recording at the beginning of important meetings - Speak clearly and avoid overlapping conversations - Use a good quality microphone when possible - Consider recording in a quiet environment ## Finished Congratulations on setting up your Zoom integration! You can now seamlessly import meeting transcripts and use them to create professional documents with TurboDocx. --- # Template Generation API Integration This comprehensive guide walks you through the Template Generation API integration process. Learn how to programmatically upload new templates or select existing ones, then generate beautiful documents with variable substitution using our RESTful API. ![Template Generation API Integration Overview](/img/template-generation-api/banner.gif) ## Overview The Template Generation API offers **two flexible paths** to document creation, because we believe in choice (and because forcing everyone down one path would be like making everyone eat vanilla ice cream forever): ### **Path A: Upload New Template** 1. **Upload & Create** - Upload your .docx/.pptx template and extract variables automatically 2. **Generate Document** - Fill variables and create your deliverable ### **Path B: Select Existing Template** 1. **Browse Templates** - Explore your template library with search and filtering 2. **Template Details** - Load template variables and preview PDF 3. **Generate Document** - Fill variables and create your deliverable ![Template Generation API Workflow](/img/template-generation-api/options.png) ### Key Features - **RESTful API**: Standard HTTP methods with JSON and multipart payloads - **Bearer Token Authentication**: Secure API access using JWT tokens - **Dual Entry Points**: Start fresh with uploads OR use existing templates - **Smart Variable Extraction**: Automatic detection of placeholders in uploaded documents - **Rich Variable Types**: Support for text, subvariables, stacks, and AI-powered content - **Template Library**: Full CRUD operations with search, filtering, and organization - **Real-time Processing**: Track document generation status throughout the process ## TLDR; Complete Working Examples ๐Ÿš€ Don't want to read the novel? Here's the executive summary: ### Available Variable Types | Type | Description | Example Placeholder | Use Case | | --------------- | ----------------------------- | ---------------------- | --------------------------- | | `text` | Simple text replacement | `{CompanyName}` | Basic text substitution | | `subvariables` | Nested variable structures | `{Employee.FirstName}` | Complex hierarchical data | | `variableStack` | Multiple instances of content | `{Projects[0].Name}` | Repeating sections, lists | | `richText` | HTML/formatted text content | `{Description}` | Formatted text with styling | | `aiPrompt` | AI-generated content | `{Summary}` | Dynamic content generation | ### Complete Dual-Path Workflow ### Quick Variable Structure Example Here's what a complex variable payload looks like: ```json { "templateId": "abc123-def456-ghi789", "name": "Employee Contract Draft", "description": "Generated contract for new hire", "variables": [ { "name": "Employee", "placeholder": "{Employee}", "text": "John Smith", "subvariables": [ { "placeholder": "{Employee.Title}", "text": "Senior Developer" }, { "placeholder": "{Employee.StartDate}", "text": "2024-01-15" } ] }, { "name": "Projects", "placeholder": "{Projects}", "variableStack": { "0": { "text": "Project Alpha - Backend Development", "subvariables": [ { "placeholder": "{Projects.Duration}", "text": "6 months" } ] }, "1": { "text": "Project Beta - API Integration", "subvariables": [ { "placeholder": "{Projects.Duration}", "text": "3 months" } ] } } } ] } ``` Now let's dive into the template wizardry... ## Prerequisites Before you begin your journey into template automation nirvana, ensure you have: - **API Access Token**: Bearer token for authentication - **Organization ID**: Your organization identifier - **Template Files**: .docx or .pptx files with placeholder variables (for uploads) ### Getting Your Credentials 1. **Login to TurboDocx**: Visit [https://www.turbodocx.com](https://www.turbodocx.com) 2. **Navigate to Settings**: Access your organization settings 3. **API Keys Section**: Generate or retrieve your API access token 4. **Organization ID**: Copy your organization ID from the settings ![Template API Credentials](/img/turbosign/api/api-key.png) ![Organization ID Location](/img/turbosign/api/org-id.png) ## Authentication All Template Generation API requests require authentication using a Bearer token in the Authorization header: ```http Authorization: Bearer YOUR_API_TOKEN ``` Additional required headers for all requests: ```http x-rapiddocx-org-id: YOUR_ORGANIZATION_ID User-Agent: TurboDocx API Client ``` ## Path A: Upload New Template Start fresh by uploading a new template document. This path is perfect when you've crafted a beautiful new template and want to jump straight into document generation. ### Endpoint ```http POST https://api.turbodocx.com/template/upload-and-create ``` ### Headers ```http Content-Type: multipart/form-data Authorization: Bearer YOUR_API_TOKEN x-rapiddocx-org-id: YOUR_ORGANIZATION_ID User-Agent: TurboDocx API Client ``` ### Request Body (Form Data) ```javascript { "templateFile": [DOCX_OR_PPTX_FILE_BINARY], "name": "Employee Contract Template", "description": "Standard employee contract with variable placeholders", "variables": "[]", // Optional: Pre-defined variables (usually extracted automatically) "tags": "[]" // Optional: Categorization tags } ``` ### Response ```json { "data": { "results": { "template": { "name": "Employee Contract Template", "description": "Standard employee contract with variable placeholders", "fonts": [ { "name": "Arial", "usage": 269 }, { "name": "Calibri", "usage": 45 } ], "defaultFont": "Arial", "orgId": "2d66ecf0-a749-475d-9403-9956d0f67884", "createdBy": "9d829e80-1135-4a97-93ea-cc2a1eecc9da", "createdOn": "2025-09-19T15:45:47.000Z", "updatedOn": "2025-09-19T15:45:47.000Z", "isActive": 1, "id": "31cc4cce-4ed7-4f3b-aa80-0b9a4f995412", "variables": null, "projectspaceId": null, "templateFolderId": null, "metadata": null }, "redirectUrl": "/templates/31cc4cce-4ed7-4f3b-aa80-0b9a4f995412/generate" } } } ``` ### Response Fields | Field | Type | Description | | ---------------------------------------- | ------------ | ----------------------------------------------- | | `data.results.template.id` | string | Unique template identifier (use for generation) | | `data.results.template.name` | string | Template name as provided | | `data.results.template.description` | string | Template description | | `data.results.template.fonts` | array | Array of font objects with name and usage | | `data.results.template.defaultFont` | string | Default font name for the template | | `data.results.template.orgId` | string | Organization ID | | `data.results.template.createdBy` | string | User ID who created the template | | `data.results.template.createdOn` | string | ISO timestamp of template creation | | `data.results.template.updatedOn` | string | ISO timestamp of last template update | | `data.results.template.isActive` | number | Active status (1 = active, 0 = inactive) | | `data.results.template.variables` | array\|null | Auto-extracted variables (null if none found) | | `data.results.template.projectspaceId` | string\|null | Project space ID (null if not assigned) | | `data.results.template.templateFolderId` | string\|null | Folder ID (null if not in folder) | | `data.results.template.metadata` | object\|null | Additional metadata (null if not set) | | `data.results.redirectUrl` | string | Frontend URL to redirect for variable filling | ### Deliverable Response Fields | Field | Type | Description | | ------------------------------------- | ------- | -------------------------------- | | `data.results.deliverable.id` | string | Unique deliverable identifier | | `data.results.deliverable.name` | string | Deliverable name as provided | | `data.results.deliverable.createdBy` | string | Email of the user who created it | | `data.results.deliverable.createdOn` | string | ISO timestamp of creation | | `data.results.deliverable.orgId` | string | Organization ID | | `data.results.deliverable.isActive` | boolean | Whether deliverable is active | | `data.results.deliverable.templateId` | string | Original template ID used | ### Code Examples ## Path B: Select Existing Template Browse your template library to find the perfect starting point. This path lets you leverage templates you've already created and organized. ### Step 1: Browse Templates List all available templates and folders in your organization. #### Endpoint ```http GET https://api.turbodocx.com/template-item ``` #### Headers ```http Authorization: Bearer YOUR_API_TOKEN x-rapiddocx-org-id: YOUR_ORGANIZATION_ID User-Agent: TurboDocx API Client ``` #### Query Parameters ```http ?limit=25&offset=0&query=contract&showTags=true&selectedTags[]=tag-123 ``` | Parameter | Type | Description | | -------------- | ------- | ----------------------------------- | | `limit` | number | Items per page (default: 6) | | `offset` | number | Pagination offset (default: 0) | | `query` | string | Search term for template names | | `showTags` | boolean | Include tag information in response | | `selectedTags` | array | Filter by specific tag IDs | #### Response ```json { "data": { "results": [ { "id": "0b1099cf-d7b9-41a4-822b-51b68fd4885a", "name": "Employee / Contractor IP Agreement Example", "description": "A Statement of Work template provided by TurboDocx", "createdOn": "2025-05-29T19:07:16.000Z", "updatedOn": "2025-09-08T11:44:11.000Z", "isActive": 1, "type": "template", "createdBy": "9d829e80-1135-4a97-93ea-cc2a1eecc9da", "email": "kahlerasse@gmail.com", "templateFolderId": null, "deliverableCount": 4, "fileSize": 24942, "fileType": "application/vnd.openxmlformats-officedocument.wordprocessingml.document", "templateCount": 0, "tags": [] }, { "id": "604d1e63-6cdc-4849-9e71-548409bfec69", "name": "Legal", "description": null, "createdOn": "2025-05-29T19:07:16.000Z", "updatedOn": "2025-05-29T19:07:16.000Z", "isActive": 1, "type": "folder", "createdBy": "9d829e80-1135-4a97-93ea-cc2a1eecc9da", "email": "kahlerasse@gmail.com", "templateFolderId": null, "deliverableCount": 0, "fileSize": null, "fileType": null, "templateCount": 0, "tags": [] } ], "totalRecords": 26 } } ``` #### Browse Response Fields | Field | Type | Description | | --------------------------------- | ------------ | ----------------------------------------------- | | `data.results[]` | array | Array of templates and folders | | `data.results[].id` | string | Unique identifier for template or folder | | `data.results[].name` | string | Name of the template or folder | | `data.results[].description` | string\|null | Description (null for some items) | | `data.results[].createdOn` | string | ISO timestamp of creation | | `data.results[].updatedOn` | string | ISO timestamp of last update | | `data.results[].isActive` | number | Active status (1 = active, 0 = inactive) | | `data.results[].type` | string | Item type ("template" or "folder") | | `data.results[].createdBy` | string | User ID who created the item | | `data.results[].email` | string | Email of the creator | | `data.results[].templateFolderId` | string\|null | Parent folder ID (null if at root level) | | `data.results[].deliverableCount` | number | Number of deliverables generated from template | | `data.results[].fileSize` | number\|null | File size in bytes (null for folders) | | `data.results[].fileType` | string\|null | MIME type of template file (null for folders) | | `data.results[].templateCount` | number | Number of templates in folder (0 for templates) | | `data.results[].tags` | array | Array of tag objects | | `data.totalRecords` | number | Total number of items available | ### Step 2: Get Template Details Load specific template information including variables and metadata. #### Endpoint ```http GET https://api.turbodocx.com/template/{templateId} ``` #### Response ```json { "data": { "results": { "id": "0b1099cf-d7b9-41a4-822b-51b68fd4885a", "name": "Employee Contract Template", "description": "Standard employment agreement template", "templateFileType": "application/vnd.openxmlformats-officedocument.wordprocessingml.document", "templateFolderId": "folder-def456", "variables": [ { "id": "var-123", "name": "Employee Name", "placeholder": "{EmployeeName}", "text": "", "mimeType": "text", "allowRichTextInjection": false, "order": 1, "subvariables": [] }, { "id": "var-456", "name": "Department", "placeholder": "{Department}", "text": "", "mimeType": "text", "allowRichTextInjection": true, "order": 2, "subvariables": [ { "placeholder": "{Department.Manager}", "text": "" } ] } ], "fonts": [ { "name": "Arial", "usage": 269 } ], "defaultFont": "Arial" } } } ``` ### Step 3: Get PDF Preview (Optional) Generate a preview PDF of the template for visual confirmation. #### Endpoint ```http GET https://api.turbodocx.com/template/{templateId}/previewpdflink ``` #### Response ```json { "results": "https://api.turbodocx.com/template/pdf/preview-abc123.pdf" } ``` ### Code Examples ## Final Step: Generate Deliverable Both paths converge here - time to fill those variables and create your masterpiece! This is where the magic happens and placeholders become real content. ### Step 1: Generate Deliverable ### Endpoint ```http POST https://api.turbodocx.com/deliverable ``` ### Headers ```http Content-Type: application/json Authorization: Bearer YOUR_API_TOKEN x-rapiddocx-org-id: YOUR_ORGANIZATION_ID User-Agent: TurboDocx API Client ``` ### Request Body ```json { "templateId": "0b1099cf-d7b9-41a4-822b-51b68fd4885a", "name": "Employee Contract - John Smith", "description": "Employment contract for new senior developer", "variables": [ { "mimeType": "text", "name": "Employee Name", "placeholder": "{EmployeeName}", "text": "John Smith", "allowRichTextInjection": 0, "autogenerated": false, "count": 1, "order": 1, "subvariables": [ { "placeholder": "{Employee.Title}", "text": "Senior Software Developer" }, { "placeholder": "{Employee.StartDate}", "text": "January 15, 2024" } ], "aiPrompt": "Generate a professional job description for a senior developer role" }, { "mimeType": "text", "name": "Department", "placeholder": "{Department}", "text": "Engineering", "allowRichTextInjection": 1, "autogenerated": false, "count": 3, "order": 2, "subvariables": [ { "placeholder": "{Department.Manager}", "text": "Sarah Johnson" } ], "variableStack": { "0": { "text": "Frontend Development Team", "subvariables": [ { "placeholder": "{Team.Focus}", "text": "React and TypeScript development" } ] }, "1": { "text": "Backend Development Team", "subvariables": [ { "placeholder": "{Team.Focus}", "text": "Node.js and database optimization" } ] } }, "metadata": { "customField": "Engineering Department" }, "aiPrompt": "Describe the key responsibilities of the engineering department" } ], "tags": ["hr-template", "contract", "full-time"], "fonts": "[{\"name\":\"Arial\",\"usage\":269}]", "defaultFont": "Arial", "replaceFonts": true, "metadata": { "sessions": [ { "id": "session-abc123", "starttime": "2024-01-15T14:12:10.721Z", "endtime": "2024-01-15T14:13:45.724Z" } ] } } ``` ### Response ```json { "data": { "results": { "deliverable": { "id": "39697685-ca00-43b8-92b8-7722544c574f", "name": "Employee Contract - John Smith", "description": "Employment contract for new senior developer", "createdBy": "api-user@company.com", "createdOn": "2024-12-19T21:22:10.000Z", "orgId": "your-organization-id", "isActive": true, "templateId": "0b1099cf-d7b9-41a4-822b-51b68fd4885a" } } } } ``` ### Variable Structure Deep Dive Understanding the variable structure is key to successful document generation: #### Basic Variable ```json { "name": "Company Name", "placeholder": "{CompanyName}", "text": "Acme Corporation", "mimeType": "text", "allowRichTextInjection": false, "order": 1 } ``` #### Variable with Subvariables ```json { "name": "Employee", "placeholder": "{Employee}", "text": "John Smith", "subvariables": [ { "placeholder": "{Employee.Title}", "text": "Senior Developer" }, { "placeholder": "{Employee.Email}", "text": "john.smith@company.com" } ] } ``` #### Variable Stack (Repeating Content) ```json { "name": "Projects", "placeholder": "{Projects}", "variableStack": { "0": { "text": "Project Alpha", "subvariables": [ { "placeholder": "{Projects.Status}", "text": "In Progress" } ] }, "1": { "text": "Project Beta", "subvariables": [ { "placeholder": "{Projects.Status}", "text": "Completed" } ] } } } ``` ### Request Fields | Field | Type | Required | Description | | ------------------------------------ | ------- | -------- | ---------------------------------------------- | | `templateId` | string | Yes | Template ID from upload or selection | | `name` | string | Yes | Name for the generated deliverable | | `description` | string | No | Description of the deliverable | | `variables[]` | array | Yes | Array of variable definitions and values | | `variables[].name` | string | Yes | Variable display name | | `variables[].placeholder` | string | Yes | Placeholder text in template (e.g., "{Name}") | | `variables[].text` | string | Yes | Actual value to replace placeholder | | `variables[].mimeType` | string | Yes | Content type ("text", "html", etc.) | | `variables[].allowRichTextInjection` | number | No | Allow HTML/rich text (0 or 1) | | `variables[].subvariables` | array | No | Nested variables within this variable | | `variables[].variableStack` | object | No | Multiple instances for repeating content | | `variables[].aiPrompt` | string | No | AI prompt for content generation | | `variables[].metadata` | object | No | Custom metadata for the variable | | `tags` | array | No | Tags for categorization | | `fonts` | string | No | JSON string of font usage statistics | | `defaultFont` | string | No | Default font for the document | | `replaceFonts` | boolean | No | Whether to replace fonts during generation | | `metadata` | object | No | Additional metadata (sessions, tracking, etc.) | ### Step 2: Download Generated File After generating a deliverable, you'll need to download the actual file. #### Endpoint ```http GET https://api.turbodocx.com/deliverable/file/{deliverableId} ``` #### Headers ```http Authorization: Bearer YOUR_API_TOKEN x-rapiddocx-org-id: YOUR_ORGANIZATION_ID User-Agent: TurboDocx API Client ``` #### Example Request ```bash curl -X GET "https://api.turbodocx.com/deliverable/file/39697685-ca00-43b8-92b8-7722544c574f" \ -H "Authorization: Bearer YOUR_API_TOKEN" \ -H "x-rapiddocx-org-id: YOUR_ORGANIZATION_ID" \ -H "User-Agent: TurboDocx API Client" \ --output "employee-contract-john-smith.docx" ``` #### Response Returns the binary content of the generated document with appropriate content-type headers: ```http Content-Type: application/vnd.openxmlformats-officedocument.wordprocessingml.document Content-Disposition: attachment; filename="employee-contract-john-smith.docx" Content-Length: 287456 ``` ### Code Examples ## Best Practices ### Security - **Never expose API tokens**: Store tokens securely in environment variables - **Use HTTPS only**: All API calls must use HTTPS in production - **Validate file uploads**: Check file types and sizes before upload - **Sanitize variables**: Validate variable content to prevent injection attacks ### Error Handling - **Check HTTP status codes**: Always verify response status before processing - **Handle file upload failures**: Implement retry logic for large file uploads - **Validate template variables**: Ensure all required variables are provided - **Log API responses**: Keep detailed logs for debugging and monitoring ### Performance - **Optimize file uploads**: Compress .docx/.pptx files when possible - **Cache template details**: Store frequently used template information - **Batch variable processing**: Group related variables together - **Async processing**: Use webhooks for long-running document generation ### Template Preparation - **Use clear placeholders**: Name variables descriptively (e.g., `{CompanyName}` not `{CN}`) - **Consistent formatting**: Use consistent placeholder formats throughout templates - **Test variable extraction**: Verify automatic variable detection works correctly - **Document structure**: Organize templates logically with folders and tags ### Variable Management - **Hierarchical organization**: Use subvariables for related data - **Stack for repetition**: Use variableStack for lists and repeating sections - **Rich text sparingly**: Only enable rich text injection when formatting is needed - **AI prompts**: Provide clear, specific prompts for AI-generated content ## Error Handling & Troubleshooting ### Common HTTP Status Codes | Status Code | Description | Solution | | ----------- | --------------------- | --------------------------------------------- | | `200` | Success | Request completed successfully | | `400` | Bad Request | Check request body format and required fields | | `401` | Unauthorized | Verify API token and headers | | `403` | Forbidden | Check organization ID and permissions | | `404` | Not Found | Verify template ID and endpoint URLs | | `413` | Payload Too Large | Reduce file size or compress template | | `422` | Unprocessable Entity | Validate field values and constraints | | `429` | Too Many Requests | Implement rate limiting and retry logic | | `500` | Internal Server Error | Contact support if persistent | ### Common Issues #### Template Upload Failures **Symptoms**: Upload returns error or times out **Solutions**: - Verify file is .docx or .pptx format - Check file size is under the maximum limit (typically 25MB) - Ensure file is not corrupted or password-protected - Verify network connection and try again #### Variable Extraction Issues **Symptoms**: Variables not detected automatically **Solutions**: - Use consistent placeholder format: `{VariableName}` - Avoid special characters in placeholder names - Ensure placeholders are in main document content (not headers/footers) - Check that placeholders are properly formatted text (not images) #### Template Selection Problems **Symptoms**: Templates not appearing in browse results **Solutions**: - Verify organization ID matches your account - Check that templates are active and not archived - Use correct API endpoint for browsing vs. folder contents - Verify search parameters and filters #### Document Generation Failures **Symptoms**: Deliverable generation fails or produces incorrect output **Solutions**: - Validate all required variables have values - Check variable names match template placeholders exactly - Ensure subvariable structure matches template expectations - Verify file permissions and storage availability #### Font and Formatting Issues **Symptoms**: Generated documents have incorrect fonts or formatting **Solutions**: - Use `replaceFonts: true` to normalize font usage - Specify `defaultFont` for consistent appearance - Check that rich text injection is enabled only when needed - Validate HTML content in rich text variables ### Debugging Tips 1. **Test with simple templates**: Start with basic templates before adding complexity 2. **Validate JSON payloads**: Use JSON validators before sending requests 3. **Check file encoding**: Ensure .docx/.pptx files are not corrupted 4. **Monitor API quotas**: Track usage to avoid rate limiting 5. **Use development endpoints**: Test with development environment first ## Next Steps ### Advanced Features to Explore Now that you've mastered the basics, consider exploring these advanced capabilities: ๐Ÿ“– **[AI-Powered Content Generation โ†’](/docs/TurboDocx%20Templating/ai-variable-generation)** ๐Ÿ“– **[Webhook Integration for Status Updates โ†’](/docs/Webhooks/webhook-configuration)** ๐Ÿ“– **[Bulk Document Generation โ†’](/docs/Templates/bulk-generation)** ๐Ÿ“– **[Template Version Management โ†’](/docs/Templates/version-control)** ### Related Documentation - [Template Management Guide](/docs/Templates/template-management) - [Variable Types and Formatting](/docs/Templates/variable-types) - [API Authentication](/docs/API/turbodocx-api-documentation) - [Integration Examples](/docs/Integrations) ## Support Need help with your template integration? We've got you covered: - **Discord Community**: [Join our Discord server](https://discord.gg/NYKwz4BcpX) for real-time support and template wizardry discussions - **Documentation**: [https://docs.turbodocx.com](https://docs.turbodocx.com) - **Template Gallery**: Browse example templates for inspiration --- Ready to become a template automation wizard? Choose your path (upload new or select existing) and start generating beautiful documents programmatically! ๐ŸŽฏ --- ## Additional Information # Guides, Tips and Tricks Here you will find additional standalone guides to features, uses and tips. ## Variable Entries There are multiple ways to enter and edit your variables. In this guide we will break down the different ways in three parts: Simple Text, Advanced, Variable Stack and Disable Variable. ### Simple Text Entries In this first example we will be using simple text entries. Things such as "CustomerName" or "ProjectName" already have formating in the template so just clicking on the box and typing your entry will be sufficient for us here. ![](/img/how_to_create_a_deliverable/step_6.png) ### Advanced Entries What happens if we need a more robust entry? Maybe we want something from our Knowledgebase entries, an image or just add some formatting to the text. We'll go through each option in this section. 1. First, what we will do is click the more options or the triple dot button located next to the variable boxes. Here you will see all the options we just discussed and more. ![more options](/img/how_to_create_a_deliverable/step_10.png) 2. Next, please select the option you would like to utilize. #### Lookup To select something from your Knowledgebase, click Lookup. A popup window will display all your entries. Scroll or search through them. The search feature will look for the keyword in the name, tags, or content. Larger entries have a preview option. Once found, click the blue "Select" button. ![lookup](/img/how_to_create_a_deliverable/step_20.png) :::tip - This is where tags and descriptions when creating the Knowledgebase entry may come in handy. - Even after selection, you can edit variables for any necessary changes from the Knowledgebase entry. Simply click the content box for simple text changes. For other variable types, use the pencil and paper icon to edit. ::: #### Image For images, click Image. A pop up will come up where you can click on it to open your file browser and choose an image. ![Image](/img/how_to_create_a_deliverable/step_img.PNG) #### Rich Text For text that you need to format, or if you'd like to add a table you will click on Rich Text. A new window will pop-up as shown in the image below. Here you will see familiar options such as text formats, colors as well as the ability to add tables among other things. Just click the "Save" button when you're done ![rich text](/img/how_to_create_a_deliverable/step_24.png) #### Date For a date, click on Date. A calendar will pop-up above the variable which you can then use to select the date. ![date](/img/how_to_create_a_deliverable/date.png) ### Variable Stack and Disable Variable Sometimes you will need more than one entry for a given variable and others you will not need a certain variable at all. These two options will allow you to do that. #### Variable Stack If you need multiple variable entries or images for a section of your Deliverable, click Create Variable Stack under more options. You'll return to the original page with a "+" button under the variable. Add stacks by clicking "+", to remove them click "-". ![rich text](/img/how_to_create_a_deliverable/step_vs.PNG) #### Disable Variable Sometimes a variable is helpful to have in a template but may not be needed in every Deliverable. For instances where the variable is not needed you can click on more options and then Disable Variable. This will remove the requirement to have content in that variable. To undo this just click the button that now replaced the more options button. ![rich text](/img/how_to_create_a_deliverable/step_10.png) ## Subvariables In your Knowledgebase you may have entries that you will want to have variables in. For example a entry outlining each parties responsibites with {CustomerName} or {OrganizationName} as variables. We call these Subvariables. Here we will go over how you can utilize them. ### Adding Subvariables 1. We will start by creating a new Knowledgebase entry (see How to Create a Knowledgebase Entry if you need a refresher), and we will be selecting "Rich Text" from our more options menu. 2. Much like adding a variable in a Template you will fill out your entry utilizing \{brackets\} around the subvariable that you would like to create, in this example we will be using \{CustomerName\} in part of our chart. 3. As you can see once the subvariable is created a seperate input box will appear on the left side under {CustomerName}. Whatever you input into this box will be placed in the subvariable! ![img](/img/additional_information/subvariables.png) :::tip When you are a creating a deliverable and choose an entry with a subvariable click on the pencil and paper icon to see the same window in step 3 and enter your subvariable input. ![](/img/additional_information/subvdeliv.png) ::: ## AI Generation Do you have notes on your CRM, or a website that can help you fill out some of the variables when creating a Deliverable? Our Ai Generation will allow you to input data and find the information it needs to fill out variables in your Deliverable! This guide will show you how. ### Navigating to AI Generation 1. Select a Template and create a Deliverable (see How to Create a Deliverable if you need a refresher). 2. Click on the "Fill in With Notes + AI" ![](/img/additional_information/aibutton.png) ### Utilizing the AI Generator #### Landing Page After you've navigated to the "Fill in With Notes + AI" page it should look like the image below. As you can see there are areas of input for Websites and other things on the left, an area to input notes you may have on the right (after you click on Advanced Settings) and your variables below. ![](/img/additional_information/ai1.png) #### Input and Generate 1. For this example we will be using the a fictional company's website and notes from our CRM. Once we have added our content hit the "Generate" button. ![](/img/additional_information/aiinput.png) 2. Our AI scans through notes and websites to identify anything matching your template variables. It populates this information in the "Value" column, which you can review and approve by checking the corresponding boxes on the right. ![](/img/additional_information/ai2.png) 3. Click the "Save" button and you will be brought back to the original "Create Deliverable" screen where you can continue to fill out your variables and create your Deliverable. ## Variable Troubleshooting Here are some best practices when troubleshooting why your variable is not showing up in the Template. ### Video Tutorial 1. All variables will need to be one word, so do not put any spaces in the middle of the {brackets}. 2. If the variable will be an image or rich text, make sure the variable is on it's own line. Use the show paragraph tool if you need help. The location for that tool in Word and Google Docs are in the image below. ![](/img/how_to_create_a_template/paragraphtool.png) When you activate the tool, it will resemble the image below. Since {CustomerName} is plain text, it can be incorporated into a paragraph. However, we will be utilizing a chart in Rich Text for {Scope}, so it needs to be on its own line. Paragraph symbols will indicate this distinction clearly. ![](/img/additional_information/ptoolexample.png) --- # Brand Identity ## Why Brand Identity Matters Your brand is one of your most valuable business assets. Whether you're a law firm, consulting agency, or enterprise organization, consistent branding across all client-facing documents: - **Builds trust and professionalism** - clients immediately recognize your materials - **Saves time and reduces errors** - eliminates manual formatting and brand guideline violations - **Ensures compliance** - automatically enforces corporate brand standards across all teams - **Increases efficiency** - setup once, apply everywhere automatically TurboDocx's Brand Identity feature allows you to configure organization-wide branding settings that apply consistently across all your document templates. Unlike template-specific font embedding, Brand Identity creates tenant-wide standards for colors, typography, and styling that ensure brand consistency across all generated documents. ## Prerequisites Checklist Before you begin, ensure you have: - [ ] **Organization administrator access** to your TurboDocx account - [ ] **Your organization logo** (PNG or JPG format, 200x200px or larger recommended) - [ ] **Brand color codes** (hex codes if you have them, or we'll extract from your logo) - [ ] **A few minutes** for initial setup :::tip Ready to Start? If you just want to get up and running quickly, jump to the [Quick Start (5 minutes)](#quick-start-5-minutes) section below. You can always come back to customize further. ::: ## Quick Start **Goal**: Get your brand colors and basic styling applied across all documents quickly. ### Step 1: Access Brand Settings 1. Go to **Organization Settings** โ†’ **Formatting Settings** 2. You'll see the Brand Identity interface with upload, controls, and preview areas ### Step 2: Upload Your Logo ![Logo Upload Interface](/img/brandidentity/LogoUpload.png) 1. Click **Upload Logo** and select your company logo 2. Click **Save Changes** - TurboDocx will automatically extract your brand colors 3. You should see extracted colors appear in the Brand Colors section ### Step 3: Apply Quick Typography ![Quick Setup Fonts](/img/brandidentity/QuickSetupFonts.png) 1. In the **Quick Setup** section, choose a preset size: - **Small**: Conservative, formal documents - **Normal**: Balanced for most business use - **Large**: Bold, presentation-style 2. Preview panel updates with your new heading sizes ### ๐ŸŽ‰ You're Done! Your brand identity is now active across all new documents. Existing templates will update to use your brand settings automatically. **Immediate value**: All new documents will now use your brand colors and consistent typography without any additional setup. --- ## Overview Brand Identity configuration includes: - **Logo Upload**: Upload your organization's logo for automatic color extraction - **Brand Colors**: Use extracted colors or customize manually - **Typography**: Configure heading and body text sizes and colors - **Table Styling**: Customize table backgrounds, headers, and borders - **Real-time Preview**: See changes instantly as you configure :::info Key Difference **Brand Identity** sets organization-wide styling standards, while **[Working with Fonts](./Working%20with%20Fonts.md)** covers embedding specific desktop fonts in individual templates. ::: ## Detailed Configuration (Optional) *Already completed the Quick Start? Skip to [What's Next](#whats-next) or continue here for advanced customization.* ### Choose Your Configuration Approach **Option A: Automatic Setup** *(Recommended for most users)* - Upload logo โ†’ Let TurboDocx extract colors โ†’ Use presets - **Best for**: Quick deployment, consistent results **Option B: Manual Customization** *(For brand-specific requirements)* - Custom color selection โ†’ Granular typography control โ†’ Advanced table styling - **Best for**: Strict brand guidelines, unique styling ### Accessing Brand Identity Settings 1. Navigate to your organization settings 2. Select **Formatting Settings** from the configuration menu 3. You'll see the Brand Identity configuration interface with three main areas: - Logo upload section (top) - Configuration controls (left side) - Live preview panel (right side) You can see the upload area and preview panel side-by-side ### Logo Upload & Save ![Logo Upload Interface](/img/brandidentity/LogoUpload.png) 1. **Upload Your Logo** - Click the **Upload Logo** button at the top of the page - Select your logo file (recommended formats: PNG, JPG) - Optimal size: 200x200px or larger for best results - Logo preview appears in upload area 2. **Save Changes** - After uploading, click **Save Changes** to apply the logo - TurboDocx will automatically analyze your logo to extract brand colors - The extraction process may take a few moments - Brand colors appear automatically in the Brand Colors section below :::tip Logo Tips - Use high-resolution logos for better color extraction - PNG files with transparent backgrounds work best - Square or horizontal logos typically work better than vertical ones ::: ## Brand Colors ![Brand Colors and Preview Panel](/img/brandidentity/BrandColorsandPreview.png) ### Automatic Color Extraction Once you upload your logo, TurboDocx automatically extracts your brand's primary colors: - **Primary Color**: The dominant color from your logo - **Secondary Color**: The most prominent accent color - **Additional Colors**: Supporting colors found in your logo The extracted colors appear in the **Brand Colors** section on the left-hand side of the interface. ### Manual Color Override **When to customize**: Your extracted colors don't match your brand guidelines exactly, or you need specific hex codes. You can customize any extracted color: 1. **Override Extracted Colors** - Click on any color swatch in the Brand Colors section - Use the color picker to select a new color - Enter specific hex codes for precise color matching - Colors update in real-time in the preview panel 2. **Color Guidelines** - Ensure sufficient contrast between text and background colors - Test colors across different document types in the preview - Text remains clearly readable in preview panel ### Using the Preview Panel The **Preview Panel** on the right-hand side shows: - **Real-time Updates**: Changes appear instantly as you modify colors - **Document Samples**: See how colors look in actual document layouts - **Different Elements**: Preview headings, body text, tables, and other components Preview panel shows your colors applied to sample document content ## Typography & Font Configuration ### Quick Setup Options For rapid configuration, use the **Quick Setup** presets: 1. **Preset Sizes** for Headings 1โ€“3: - **Small**: Conservative sizing for formal documents (H1: 16pt, H2: 14pt, H3: 12pt) - **Normal**: Balanced sizing for most use cases (H1: 18pt, H2: 16pt, H3: 14pt) - **Large**: Bold sizing for impactful presentations (H1: 22pt, H2: 18pt, H3: 16pt) 2. **Apply Presets**: - Select your preferred preset - Changes apply immediately to H1, H2, and H3 headings in preview panel - You can still make granular adjustments afterward **Stop here if**: You're satisfied with the preset sizes and want to keep setup simple. ### Granular Typography Adjustments For precise control, expand the typography accordions: #### Headings (H1, H2, H3) ![Heading Configuration Controls](/img/brandidentity/HeadingConfig.png) **For each heading level, configure:** - **Font Size**: Adjust size in points or pixels - **Font Color**: Choose from brand colors or custom colors **Best Practices:** - Maintain clear hierarchy: H1 > H2 > H3 in size - Use consistent color schemes across heading levels - Ensure sufficient contrast for accessibility #### Body Text Configuration **Configure body text settings:** - **Font Size**: Optimal reading size (typically 11-12pt for documents) - **Font Color**: Usually darker colors for readability ## Table Styling Configuration ![Table Styling Configuration](/img/brandidentity/TableSetup.png) Customize how tables appear in your documents: ### Table Background Colors - **Main Table Background**: Overall table background color - **Alternating Rows**: Optional striped pattern for better readability - **Color Intensity**: Adjust opacity for subtle backgrounds ### Header & Subheader Styling **Table Headers:** - **Header Background Color**: Primary header row styling - **Header Text Color**: Ensure contrast with background - **Subheader Background Color**: Secondary header styling for complex tables **Styling Tips:** - Use brand colors for headers to maintain consistency - Ensure text remains readable on colored backgrounds - Consider print-friendly colors for documents that may be printed ### Border & Text Styling **Border Configuration:** - **Table Border Color**: Outline color for the entire table - **Cell Border Color**: Internal grid line colors - **Border Width**: Thin, medium, or thick border options **Text Colors (Optional):** - **Data Text Color**: Color for table cell content - **Override Body Text**: Use different colors in tables vs. regular text - **Emphasis Colors**: Highlight important data points ### Table Preview The preview panel shows your table styling applied to sample data, allowing you to: - Verify color combinations work well together - Check readability across different cell types - Ensure consistent branding appearance ## Advanced Configuration Tips ### Color Consistency - **Use Brand Color Palette**: Stick to extracted or manually set brand colors - **Create Color Hierarchy**: Primary colors for headers, secondary for accents ### Typography Hierarchy - **Establish Clear Levels**: Make H1-H3 distinctly different sizes - **Maintain Proportions**: Use mathematical ratios (1.25x, 1.5x, 2x) between levels - **Consider Context**: Adjust sizes based on document types (reports vs. presentations) ### Template Integration Your Brand Identity settings automatically apply to: - **New Templates**: All newly created templates inherit brand settings - **Existing Templates**: Update existing templates to use brand settings - **Generated Documents**: All output maintains brand consistency ## What's Next? Now that your Brand Identity is configured, here's how to put it to work: ### Immediate Next Steps 1. **Test with existing templates** - Generate a document from an existing template to see your branding applied 2. **Create your first branded template** - Follow our [How to Create a Template](./How%20to%20Create%20a%20Template.md) guide 3. **Set up team access** - Ensure team members have appropriate permissions to use templates ### Building Your Document Workflow - **Templates**: Your brand settings automatically apply to all new and existing templates - **Deliverables**: Every generated document will use your brand identity consistently - **Knowledge Base**: Combine with [knowledge base entries](./How%20to%20Create%20a%20Knowledgebase%20Entry.md) for fully automated, branded documents ### Integration Opportunities - **Salesforce Integration**: Branded proposals generated directly from CRM data - **Teams/Zoom Integration**: Consistent meeting follow-ups and reports - **Document Library**: Build a library of branded templates for different use cases :::tip Pro Tip Start with 2-3 core templates (proposal, report, letter) to see immediate value, then expand your template library as needed. ::: ## Troubleshooting ### Problem: Logo Won't Upload **Is your file under 5MB?** - โŒ **No**: Compress your logo file or use a smaller version - โœ… **Yes**: Continue to format check **Is your file PNG or JPG format?** - โŒ **No**: Convert your logo to PNG or JPG format - โœ… **Yes**: Check image resolution (should be 200x200px or larger) ### Problem: Colors Aren't Extracting Well **Does your logo have multiple distinct colors?** - โŒ **No (monochrome/single color)**: Use manual color override to add your brand colors - โœ… **Yes**: Continue to contrast check **Are colors in your logo high contrast?** - โŒ **No (subtle/low contrast)**: Use manual color override for better results - โœ… **Yes**: Try a higher resolution logo or manual override specific colors ### Problem: Changes Not Appearing **Are changes showing in the preview panel?** - โŒ **No**: Refresh the page and try again - โœ… **Yes**: Changes may take a few minutes to apply to generated documents **Did you click "Save Changes"?** - โŒ **No**: Click Save Changes to apply your brand settings - โœ… **Yes**: Generate a test document to verify settings are applied ### Template Application Issues **Brand Settings Not Applying:** - Verify templates are set to use organization brand settings - Check template-specific overrides that may conflict - Ensure templates are saved after brand updates **Font Conflicts:** - TurboDocx by default uses the font found in the template - For custom fonts, use [Working with Fonts](./Working%20with%20Fonts.md) embedding ## Getting Help If you encounter issues with Brand Identity configuration: 1. **Check Template Compatibility**: Ensure templates support brand identity features 2. **Verify Permissions**: Confirm you have organization admin privileges 3. **Test with Sample Documents**: Generate test documents to verify settings 4. **Contact Support**: Provide specific details about configuration issues and document types For technical font embedding questions, refer to [Working with Fonts](./Working%20with%20Fonts.md). :::info Next Steps After configuring your Brand Identity, create new templates or update existing ones to see your branding applied consistently across all generated documents. ::: --- ## How to Create a Deliverable Now that you have a Template and entries in your Knowledgebase, let's put it all together and create your first document or what we call a Deliverable. ## Step 1: Getting to and Selecting your Deliverable Let's get you to your Templates and select the template for your first Deliverable. 1. On the left hand side click on the Templates tab. 2. Next select the template you want to use. If you have folders set up or pages of templates that makes it hard to find the template you want don't forget the search feature! ![This is the image for A with the text: Login and then clicked](/img/how_to_create_a_deliverable/step_1.png) 3. With your template open it should look like the image below. Here you can check to make sure all your variables are present and also have a preview of the template to make sure you have the right document. If everything looks correct, you can go ahead and click "Create Deliverable ![This is the image for SPAN with the text: TurboDocx Demo and then clicked](/img/how_to_create_a_deliverable/step_2.png) ## Step 2: Creating your Deliverable After you've clicked "Create Deliverable" you will be brought to a new page where you will be able to enter and edit all your variables. There are multiple ways to enter and edit your variables so for Step 2 we will break it down into 3 parts: Simple Text Entries, Advanced Entries, Variable Stack and Disable Variable. For future reference this information can also be found under the "Additional Information" tab under "Variable Entry". ### Simple Text Entries In this first example we will be using simple text entries. Things such as "CustomerName" or "ProjectName" already have formating in the template so just clicking on the box and typing your entry will be sufficient for us here. ![](/img/how_to_create_a_deliverable/step_6.png) ### Advanced Entries What happens if we need a more robust entry? Maybe we want something from our Knowledgebase entries, an image or just add some formatting to the text. We'll go through each option in this section. 1. First, what we will do is click the more options or the triple dot button located next to the variable boxes. Here you will see all the options we just discussed and more. ![more options](/img/how_to_create_a_deliverable/step_10.png) 2. Next, please select the option you would like to utilize. #### Lookup To select something from your Knowledgebase, click Lookup. A popup window will display all your entries. Scroll or search through them. The search feature will look for the keyword in the name, tags, or content. Larger entries have a preview option. Once found, click the blue "Select" button. ![lookup](/img/how_to_create_a_deliverable/step_20.png) :::tip - This is where tags and descriptions when creating the Knowledgebase entry may come in handy. - Even after selection, you can edit variables for any necessary changes from the Knowledgebase entry. Simply click the content box for simple text changes. For other variable types, use the pencil and paper icon to edit. ::: #### Image For images, click Image. A pop up will come up where you can click on it to open your file browser and choose an image. ![Image](/img/how_to_create_a_deliverable/step_img.PNG) #### Rich Text For text that you need to format, or if you'd like to add a table you will click on Rich Text. A new window will pop-up as shown in the image below. Here you will see familiar options such as text formats, colors as well as the ability to add tables among other things. Just click the "Save" button when you're done ![rich text](/img/how_to_create_a_deliverable/step_24.png) #### Date For a date, click on Date. A calendar will pop-up above the variable which you can then use to select the date. ![date](/img/how_to_create_a_deliverable/date.png) ### Variable Stack and Disable Variable Sometimes you will need more than one entry for a given variable and others you will not need a certain variable at all. These two options will allow you to do that. #### Variable Stack If you need multiple variable entries or images for a section of your Deliverable, click Create Variable Stack under more options. You'll return to the original page with a "+" button under the variable. Add stacks by clicking "+", to remove them click "-". ![rich text](/img/how_to_create_a_deliverable/step_vs.PNG) #### Disable Variable Sometimes a variable is helpful to have in a template but may not be needed in every Deliverable. For instances where the variable is not needed you can click on more options and then Disable Variable. This will remove the requirement to have content in that variable. To undo this just click the button that now replaced the more options button. ![rich text](/img/how_to_create_a_deliverable/step_10.png) ## Step 3: Generate Deliverable Once you've completed filling out the variables in your Deliverable, click the "Generate Deliverable" button on the bottom right of the page and then "Confirm" on the pop up. ![This is the image for BUTTON with the text: Generate Deliverable and then clicked](/img/how_to_create_a_deliverable/step_29.png) ## Step 4: Export Deliverable Once you've clicked "Confirm" the next screen will be a preview of your deliverable. After you've taken a look you can press the "Export" button on the top right. Select how you would like to export it and you're done! ![This is the image for BUTTON with the text: Confirm and then clicked](/img/how_to_create_a_deliverable/step_35.png) ## Finished Congratulations on creating your first Deliverable. I hope these tutorials were helpful and we look forward to working with you to create quick and easy documentation automation! --- ## How to Create Document Templates # Create Document Templates for Automated Proposals, Contracts & Reports Transform data from meetings, CRM systems, and integrations into professional documents automatically. This guide shows you how to create document templates for proposals, statements of work, quotes, and contracts that can be populated with content from your connected data sources. **Perfect for creating:** - ๐Ÿ“„ **Proposals** from discovery calls, opportunities, and project data - ๐Ÿ“‹ **Statements of Work (SOW)** based on requirement discussions and business data - ๐Ÿ’ฐ **Quotes & Estimates** using meeting notes, specifications, and pricing information - ๐Ÿ“ **Project Contracts** incorporating terms from calls and account details - ๐Ÿค **Service Agreements** with details from consultations and contact systems - ๐Ÿ“Š **Reports & Summaries** with action items, metrics, and data from your integrations Transform conversations and CRM data into professional documents automatically - streamlining your workflow with intelligent document generation. Congratulations on starting your first document template. In this guide, we will show you how to create your first document template and how to upload it to your TurboDocx account. ## Video Tutorial ## Step 1: Create New Document Template Let's start with creating our first document template. 1. Open up whatever application you will be using to create your document (Word, Google Drive, etc). 2. Anything you would like to be a variable or an item that will change from document to document will be put between these {brackets}. This can be single items such as {Date} or {CustomerName} or it can be whole sections such as {Scope} as seen in the images below. ![](/img/how_to_create_a_template/CreatingATemplateDoc1Title.PNG) ![](/img/how_to_create_a_template/CreatingATemplateDoc2Title.PNG) 3. Once you've finished your document with the variables that you want please save it and move on to the next step. :::tip - If you've previously created a document you want to use as a template, go ahead and use that. Just remember to replace all the variables within the {brackets}. Find and replace may be helpful here. - All variables will need to be one word, so do not put any spaces in the middle of the {brackets}. - Remember your Knowledgebase, if the variable has the same name as something in your Knowledgebase TurboDocx will use the info from the Knowledgebase to fill in the corresponding Variable. - If you want to include an image or rich text, make sure the variable is on it's own line. Use the show paragraph tool if you need help. The location for that tool in Word and Google Docs are in the image below. ![](/img/how_to_create_a_template/paragraphtool.png) ::: ## Step 2: Upload Template Document Now that we've created our first template, let's upload it to TurboDocx. 1. Login to your TurboDocx account you should land on the Templates tab if not it can be found on the left side. Then, On the top right of your window, click on the "New Template" button. ![](/img/how_to_create_a_template/newtemp.png) 2. As you can see, there are multiple ways to upload a Document. For this example, we will click on the "Upload Template" area then choose the document you just saved in the last step or drag and drop your that document into the area. ![](/img/how_to_create_a_template/step_1.png) ## Step 3: Preview Template On the next screen, you will see a preview of your template. 1. Check to make sure all the variables you wanted are listed under the variables column. - (Optional) - On this page, you can also create default entries for your template that you can change later when you are creating the deliverable. ![](/img/how_to_create_a_template/step_3.png) 2. Once you've checked to make sure all your variable are set, go ahead and click the "Create Template" button on the bottom right corner (you may need to scroll) :::tip - Tags can be very useful to help find certain templates, and Knowledgebase entries. Don't forget to utilize them! You can also always come back and add them in the future. - If your variables are not showing up, go back to step one and check if you're using the right brackets, and that there are no spaces in your variable name. ::: ## Finished Congratulations on uploading your first document template. You should be able to see it on the template tab once you go back to the main page. --- ## How to Create a Knowledgebase Entry Congratulations on starting your first entry in the Knowledgebase. In this guide, we will show you how to create your first entry. ## Step 1: Navigate to and Create a Knowledgebase Entry Let's start by getting to the Knowledgebase and creating a new entry. 1. On the left side of the screen click on the tab "Knowledgebases". ![](/img/how_to_create_knowledgebases/step_1.png) 2. Next, click the blue "New" button on the top left of the page. ![](/img/how_to_create_knowledgebases/step_2a.png) ## Step 2: Enter the Information After clicking "New", a new window should pop-up on the right side of your screen. Here is where you will input all of the relevant information. 1. First, name your entry. We would suggest something that will help to indicate to other users what the Knowledgebase entry will include. 2. Next, create a placeholder. Don't worry the brackets are automatically used for you. 3. In the "Default Value" box, enter the info you want to use for this Knowledgebase entry. For plain text, type directly into the box. If you need formatting, images, or dates, click the "More Options" button for those choices. - For additional info on how to use these tools, see the "Additional Information" tab under "Variable Entry". - You can also add subvariables in your entries. For more information on how, see the "Additional Information" tab under "Subvariables" ![](/img/how_to_create_knowledgebases/step_8.png) 4. Lastly, press the "Submit" button on the bottom right of the page. :::tip - Although "Tags" and "Add Description" are optional, this can help others find and understand the purpose of the entry quickly and easily. - If the "Placeholder" is the same as a variable used in the Template TurboDocx will automatically place the Knowledgebases entry in that variable slot. Of course, you will still be able to change it. ::: ## Step 3: Search Once you've clicked the "Submit" button you should go back to the main Knowledgebases screen. From here you can add new entries, delete outdated or uneeded entries, manage your tags, or search for a specific entry. Note: When searching TurboDocx will look for the keyword in the name, tags and content! ![](/img/how_to_create_knowledgebases/step_2b.png) ## Finished Congratulations on creating your first Knowledgebases entry. --- ## How to Create Presentation Templates # Create Presentation Templates for Data-Driven Presentations Turn your business data into professional presentations automatically. This guide shows you how to create presentation templates that can be populated with data from meetings, CRM systems, project management tools, and other integrations. **Ideal for:** - ๐Ÿ“ž **Post-meeting summaries** from calls and conferences - ๐ŸŽฏ **Client presentations** based on opportunity data and discovery sessions - ๐Ÿ“‹ **Project status decks** from planning meetings and project systems - ๐Ÿ“Š **Sales presentations** customized with prospect and opportunity information - ๐Ÿ”„ **Recurring reporting formats** with dynamic content from your integrations - ๐Ÿ“ˆ **Executive dashboards** with real-time metrics and KPIs Congratulations on starting your first presentation template. In this guide, we will show you how to create your first presentation template and how to upload it to your TurboDocx account. ## Video Tutorial ## Step 1: Create New Presentation Template Let's start with creating our first presentation template. 1. Open PowerPoint or your preferred presentation application. 2. Create your slide content, leaving areas where you want dynamic content. 3. For each variable area, you'll need to create invisible shapes to hold your variables. Screenshots Coming Soon ## Step 2: Setting Up Variables in Slides For slide deck templates, follow these specific steps to ensure variables work correctly: 1. **Delete existing content** from the slide where you want dynamic content 2. **Insert a shape:** - Go to **Insert โ†’ Shape** in the ribbon - Choose a rectangle - Draw the shape where you want the dynamic content to go 3. **Add your variable:** - Click inside the shape - Type your variable name (e.g., `{WhatWeHeard}`) - Remember: all one word, no spaces 4. **Align text to top:** - With the shape selected, go to **Shape Format โ†’ Align Text โ†’ Top** - This keeps everything uniform across slides 5. **Make the shape invisible:** - Set **Shape Fill** to "No Fill" - Set **Shape Outline** to "No Fill" - This removes the colored box, making it invisible 6. **Format the text:** - Change the font color to black (or your preferred color) - This makes it easy and clear to see in your final deck Screenshots Coming Soon ### Example Slide Setup For a slide with sections like: - What we heard - How we can help - Follow-up questions Create separate invisible shapes for each section with variables like: - `{WhatWeHeard}` - `{HowWeCanHelp}` - `{FollowUpQuestions}` Each variable should be in its own invisible rectangle shape, not mixed with other text. ## Step 3: Upload Presentation Template Now that we've created our first presentation template, let's upload it to TurboDocx. 1. Login to your TurboDocx account you should land on the Templates tab if not it can be found on the left side. Then, On the top right of your window, click on the "New Template" button. 2. As you can see, there are multiple ways to upload a Document. For this example, we will click on the "Upload Template" area then choose the presentation you just saved in the last step or drag and drop your presentation into the area. Screenshots Coming Soon ## Step 4: Preview Template On the next screen, you will see a preview of your template. 1. Check to make sure all the variables you wanted are listed under the variables column. - (Optional) - On this page, you can also create default entries for your template that you can change later when you are creating the deliverable. 2. Once you've checked to make sure all your variable are set, go ahead and click the "Create Template" button on the bottom right corner (you may need to scroll) Screenshots Coming Soon :::tip - Tags can be very useful to help find certain templates, and Knowledgebase entries. Don't forget to utilize them! You can also always come back and add them in the future. - If your variables are not showing up, make sure you're using invisible rectangle shapes and that there are no spaces in your variable name. ::: ## Finished Congratulations on uploading your first presentation template. You should be able to see it on the template tab once you go back to the main page. --- ## How to Create a Template Congratulations on starting your first template. In this guide, we will show you how to create your first template and how to upload it to your TurboDocx account. ## Video Tutorial ## Step 1: Create New Template Let's start with creating our first template. 1. Open up whatever application you will be using to create your document (Word, Google Drive, etc). 2. Anything you would like to be a variable or an item that will change from document to document will be put between these {brackets}. This can be single items such as {Date} or {CustomerName} or it can be whole sections such as {Scope} as seen in the images below. ![](/img/how_to_create_a_template/CreatingATemplateDoc1Title.PNG) ![](/img/how_to_create_a_template/CreatingATemplateDoc2Title.PNG) 3. Once you've finished your document with the variables that you want please save it and move on to the next step. :::tip - If you've previously created a document you want to use as a template, go ahead and use that. Just remember to replace all the variables within the {brackets}. Find and replace may be helpful here. - All variables will need to be one word, so do not put any spaces in the middle of the {brackets}. - Remember your Knowledgebase, if the variable has the same name as something in your Knowledgebase TurboDocx will use the info from the Knowledgebase to fill in the corresponding Variable. - If you want to include an image or rich text, make sure the variable is on it's own line. Use the show paragraph tool if you need help. The location for that tool in Word and Google Docs are in the image below. ![](/img/how_to_create_a_template/paragraphtool.png) ::: ## Step 2: Upload Template Document Now that we've created our first template, let's upload it to TurboDocx. 1. Login to your TurboDocx account you should land on the Templates tab if not it can be found on the left side. Then, On the top right of your window, click on the "New Template" button. ![](/img/how_to_create_a_template/newtemp.png) 2. As you can see, there are multiple ways to upload a Document. For this example, we will click on the "Upload Template" area then choose the document you just saved in the last step or drag and drop your that document into the area. ![](/img/how_to_create_a_template/step_1.png) ## Step 3: Preview Template On the next screen, you will see a preview of your template. 1. Check to make sure all the variables you wanted are listed under the variables column. - (Optional) - On this page, you can also create default entries for your template that you can change later when you are creating the deliverable. ![](/img/how_to_create_a_template/step_3.png) 2. Once you've checked to make sure all your variable are set, go ahead and click the "Create Template" button on the bottom right corner (you may need to scroll) :::tip - Tags can be very useful to help find certain templates, and Knowledgebase entries. Don't forget to utilize them! You can also always come back and add them in the future. - If your variables are not showing up, go back to step one and check if you're using the right brackets, and that there are no spaces in your variable name. ::: ### Example Slide Setup For a slide with sections like: - What we heard - How we can help - Follow-up questions Create separate invisible shapes for each section with variables like: - `{WhatWeHeard}` - `{HowWeCanHelp}` - `{FollowUpQuestions}` Each variable should be in its own invisible rectangle shape, not mixed with other text. --> ## Finished Congratulations on uploading your first template. You should be able to see it on the template tab once you go back to the main page. --- # Office Integration Edit your TurboDocx templates and deliverables directly in Microsoft Word and PowerPoint with full Office functionality, while keeping everything synchronized and preventing editing conflicts. ## What You Can Do With Office Integration, you can: - **Open templates in Word** - Edit with all Word features (track changes, comments, formatting, etc.) - **Open presentations in PowerPoint** - Use PowerPoint's full editing capabilities - **Save changes automatically** - Your edits sync back to TurboDocx in real-time - **Work safely** - File locking prevents others from editing while you work - **See updates instantly** - PDF previews regenerate automatically after changes ## Supported Applications - **Microsoft Word** - For `.docx` template files - **Microsoft PowerPoint** - For `.pptx` presentation files :::info Office Installation Required You need Microsoft Office installed on your computer. The web versions of Office don't support this integration. ::: ## How to Use Office Integration ### Opening a Document 1. **Find your template or deliverable** in TurboDocx 2. **Click "Open in Word"** or **"Open in PowerPoint"** button 3. **Wait for Office to launch** - This may take a few seconds 4. **Start editing** - The document opens with all your content ready to edit :::tip First Time Setup Your browser may ask permission to open Office applications. Click "Allow" or "Open" to enable the integration. ::: ### While Editing **What you'll see:** - Your document opens in Word/PowerPoint as normal - An overlay appears in your browser showing "Editing in Progress" - The document is locked - other users can't edit it while you work **What you can do:** - Edit the document with full Office features - Use track changes, comments, and formatting tools - Save your work frequently (Ctrl+S or Cmd+S) - Work offline - changes sync when you're back online **What happens automatically:** - Your changes save back to TurboDocx when you press Ctrl+S - Template variables are detected and updated - PDF previews regenerate in the background - Other users see the document is being edited ### Finishing Your Edits When you're done editing: 1. **Save your final changes** in Word/PowerPoint (Ctrl+S) 2. **Return to your browser** with TurboDocx open 3. **Click "I'm Done Editing"** on the overlay 4. **The document becomes available** for other users :::warning Important: What Happens After "I'm Done Editing" Once you click "I'm Done Editing", **your Office document becomes read-only**. If you try to save again in Word/PowerPoint, you'll get an error message. This is normal and prevents conflicts with other users. **If you need to make more changes:** - Click "Open in Word" again to start a new editing session - This will give you a fresh editing session with save permissions ::: ## What Other Users See ### When Someone is Editing - **Lock indicator** shows who is currently editing - **"Being edited by [Name]"** message appears - **All editing functions are disabled** for other users - **PDF preview updates** as the editor saves changes ### When Editing is Complete - **Lock is automatically removed** - **All users can edit again** - **Updated PDF preview** reflects the latest changes ## Common Workflows ### Quick Edit Workflow Perfect for small changes: 1. Click "Open in Word" 2. Make your changes 3. Save (Ctrl+S) 4. Click "I'm Done Editing" ### Extended Editing Session For major revisions: 1. Click "Open in Word" 2. Make multiple rounds of changes 3. Save frequently throughout your session 4. Take breaks - your session stays active 5. When completely finished, click "I'm Done Editing" ### Collaboration Workflow Working with team members: 1. **Person A** opens document for editing 2. **Person B** sees lock message and waits 3. **Person A** completes edits and clicks "I'm Done Editing" 4. **Person B** can now click "Open in Word" to make their changes ### Template Variable Updates When you add or modify template variables: 1. Edit your template in Word 2. Save your changes (Ctrl+S) 3. Return to browser - you'll see "Files are changed" button 4. Click "Files are changed" to update variables 5. Fill in any new template variables 6. Click "I'm Done Editing" when finished ## Troubleshooting ### "Office Won't Open" Issues **Problem:** Clicking "Open in Word" doesn't open the document **Solutions:** 1. **Check Office Installation** - Make sure Microsoft Office is installed and activated 2. **Try a Different Browser** - Edge works best, Chrome is also good 3. **Allow Pop-ups** - Your browser might be blocking the Office protocol 4. **Restart Your Browser** - Close all tabs and restart 5. **Clear Cache** - Clear your browser cache and cookies ### "Can't Save" Issues **Problem:** Getting errors when trying to save in Word/PowerPoint **Most Common Cause:** You clicked "I'm Done Editing" but Office is still open **Solution:** This is normal behavior! Once you click "I'm Done Editing", Word becomes read-only to prevent conflicts. **To continue editing:** 1. Go back to TurboDocx in your browser 2. Click "Open in Word" again 3. This starts a new editing session with save permissions **Other Save Issues:** - **Check your internet connection** - Saves need an internet connection - **Make sure no one else is editing** - Only one person can edit at a time - **Try saving again** - Sometimes network delays cause temporary save failures ### "Document is Locked" Messages **Problem:** TurboDocx says the document is being edited by someone else **What this means:** Another user currently has the document open for editing **Solutions:** 1. **Wait for them to finish** - They'll click "I'm Done Editing" when finished 2. **Contact the person** - Ask them if they're still actively editing 3. **Admin can force unlock** - If you're an admin and the person isn't responding ### "Long Delay" When Opening Word **Problem:** Word takes 10+ seconds to open after making template changes **Why this happens:** TurboDocx is processing your template variable changes **Solutions:** - **Be patient** - This is normal after variable updates - **Don't click multiple times** - Wait for Word to open - **Check your internet speed** - Slow connections take longer ## Tips for Best Results ### Save Frequently - Press **Ctrl+S** (Windows) or **Cmd+S** (Mac) often - Don't rely on auto-save - manual saves sync faster - Save before making major changes ### Use "I'm Done Editing" Properly - **Always click it** when you're completely finished - **Don't click it** if you plan to continue editing soon - **Remember** - Office becomes read-only after clicking ### Collaboration Etiquette - **Communicate with your team** about who's editing what - **Don't keep documents open** unnecessarily - **Finish editing sessions promptly** so others can work ### Working Offline - You can work offline - changes sync when you reconnect - Save frequently when you're back online - Avoid having multiple people edit the same document offline ## System Requirements ### Computer Requirements - **Windows 10/11** or **macOS** (latest versions recommended) - **Microsoft Office installed** (Office 365, Office 2019, or newer) - **Stable internet connection** for syncing changes ### Browser Requirements - **Chrome** (recommended) - **Microsoft Edge** (recommended) - **Firefox** (may need setup) - **Safari** (limited support) ### Office Versions - โœ… **Office 365** - Full support - โœ… **Office 2021** - Full support - โœ… **Office 2019** - Full support - โŒ **Office Online** - Not supported (web versions) - โŒ **Older versions** - May not work properly ## Getting Help If you're still having issues: 1. **Contact your team admin** - They can check locks and permissions 2. **Try a different computer** - Helps identify computer-specific issues 3. **Test with a different template** - Helps identify template-specific issues 4. **Check with IT support** - They can verify Office installation and network settings Remember: Office Integration is designed to work seamlessly, but like any technology, sometimes you need to try a few solutions to get everything working perfectly! --- # Template Troubleshooting Before you throw your computer, watch this video! Your variables aren't broken, but your template might need a little bit of tender loving care. Here are the most common issues and how to fix them. ## Video Tutorial ## Common Variable Issues ### 1. Variable Naming Rules All variables must be **one word only** - no spaces allowed inside the {brackets}. โœ… Correct - One word only {'{CustomerName}'} {'{ProjectDate}'} {'{ScopeSection}'} โœจ These variable names will work perfectly in your templates โŒ Incorrect - Contains spaces {'{Customer Name}'} {'{Project Date}'} {'{Scope Section}'} โš ๏ธ Spaces inside brackets will prevent variables from being recognized :::tip Naming Best Practices - Use **CamelCase** for multi-word variables: `{CustomerName}` instead of `{Customer Name}` - Keep names **descriptive but concise**: `{ProjectStartDate}` instead of `{Date}` - Be **consistent** across your templates: always use the same format ::: ### 2. Variables Must Be On Their Own Line **Critical Rule:** When inserting sections, images, or rich text, the variable needs to be on its own line. Don't squeeze it into a sentence. #### Examples: How to Format Variables Correctly โŒ Incorrect - Variable mixed with other text Rich Text/Section Variables: Proposal Section: {'{ProposalSection}'}, If you have any questions about the proposal... Image Variables: Photo: {'{HeadshotImage}'}, Nicolas Fry, CEO โš ๏ธ This format will prevent variables from working properly โœ… Correct - Variable on its own line Rich Text/Section Variables: Proposal Section: {'{ProposalSection}'} If you have any questions about the proposal... Image Variables: Photo: {'{HeadshotImage}'} Nicolas Fry, CEO โœจ This format ensures variables work correctly and content flows properly :::tip Key Takeaway Notice how in the correct examples, each variable is **completely isolated** on its own line with blank lines above and below. This separation is crucial for rich text, images, and section variables to function properly. ::: ### 3. Use Paragraph Markers to Debug One of the most common mistakes is thinking a variable is on its own line when it's not. To be sure, turn on the paragraph marker tool: **In Microsoft Word:** - Click the paragraph icon (ยถ) to reveal hidden spaces and line breaks - It's the fastest way to catch formatting issues before they break your template **In Google Docs:** - Go to **View โ†’ Show non-printing characters** - You'll get the same results as Word ![](/img/how_to_create_a_template/paragraphtool.png) When you activate the tool, it will resemble the image below. Since {CustomerName} is plain text, it can be incorporated into a paragraph. However, we will be utilizing a chart in Rich Text for {Scope}, so it needs to be on its own line. Paragraph symbols will indicate this distinction clearly. ![](/img/additional_information/ptoolexample.png) ## Quick Troubleshooting Steps When your variables aren't working, follow these steps in order: ### 1. Check Variable Naming No spaces inside brackets - use `{CustomerName}` not `{Customer Name}` ### 2. Verify Line Placement Variables for images, rich text, or sections must be on their own line ### 3. Use Paragraph Markers Turn on ยถ symbols to see hidden formatting issues ### 4. For Presentation Templates Use invisible rectangle shapes, not text boxes โ†’ [See presentation setup guide](./How%20to%20Create%20a%20Presentation%20Template) ### 5. Test Your Template Create a simple deliverable to verify everything works โ†’ [Learn how to create deliverables](./How%20to%20Create%20a%20Deliverable) :::tip Advanced Troubleshooting & Best Practices **If variables still aren't working:** - **Start simple:** Test with basic text variables first, then add complex ones - **Double-check spacing:** Use paragraph markers to confirm variables are completely isolated - **For presentations:** Ensure shapes are truly invisible (no fill, no outline) **Best practices for success:** - **Test your template** by creating a deliverable before finalizing โ†’ [See how](./How%20to%20Create%20a%20Deliverable) - **Keep variable names descriptive** but concise - **Use consistent formatting** across all templates โ†’ [Document templates](./How%20to%20Create%20a%20Document%20Template) | [Presentation templates](./How%20to%20Create%20a%20Presentation%20Template) ::: ## Need More Help? Still stuck? We're here to help! Check out our comprehensive guides: - [๐Ÿ“„ Document Templates](./How%20to%20Create%20a%20Document%20Template) - Learn to create Word/Google Doc templates - [๐Ÿ“Š Presentation Templates](./How%20to%20Create%20a%20Presentation%20Template) - Learn to create PowerPoint templates - [๐ŸŽฏ Create Deliverables](./How%20to%20Create%20a%20Deliverable) - Learn to generate documents from templates - [๐Ÿ“š Full Documentation](https://docs.turbodocx.com) - Complete TurboDocx documentation If you need additional help, don't hesitate to reach out to our support team. --- # Working with Fonts TurboDocx supports a wide variety of fonts for document generation. This guide covers the fonts available in TurboDocx, how to use them effectively, and how to embed custom fonts in your templates. ## Embedding Fonts in Templates For documents that require specific fonts not included in TurboDocx's standard collection, you can embed fonts directly in your DOCX or PPTX templates. ### For Microsoft Word (DOCX Templates) #### Windows 1. Open your template in Microsoft Word 2. Go to **File โ†’ Options ![This is the image for clicking file -> options in Microsoft Word.](/img/embedding_fonts/FileOptions.png) 3. Go to the **Save** tab 4. Under "Preserve fidelity when sharing this document," check: - โœ… **Embed fonts in the file** - โœ… **Embed only the characters used in the document** (recommended for smaller file sizes) - โœ… **Do not embed common system fonts** (optional but recommended) ![This is the image for clicking file -> options in microsoft Word.](/img/embedding_fonts/SaveandEmbedFontsInFile.png) 5. Click **OK** 6. Save your document 7. Upload the updated template to TurboDocx #### macOS 1. Open your template in Microsoft Word 2. Go to **Word โ†’ Preferences โ†’ Save** 3. Under "Preserve fidelity when sharing this document," check: - โœ… **Embed fonts in the file** - โœ… **Embed only the characters used in the document** (recommended) 4. Click **OK** 5. Save your document 6. Upload the updated template to TurboDocx ### For Microsoft PowerPoint (PPTX Templates) #### Windows 1. Open your template in Microsoft PowerPoint 2. Go to **File โ†’ Options** ![This is the image for clicking file -> options in Microsoft PowerPoint.](/img/embedding_fonts/pptxFileOptions.png) 3. Go to the **Save** Tab 4. Under "Preserve fidelity when sharing this presentation," check: - โœ… **Embed fonts in the file** - โœ… **Embed only the characters used in the presentation** ![This is the image for clicking file -> options in Microsoft PowerPoint.](/img/embedding_fonts/pptxSaveandEmbed.png) 5. Click **OK** 6. Save your presentation 7. Upload the updated template to TurboDocx #### macOS 1. Open your template in Microsoft PowerPoint 2. Go to **PowerPoint โ†’ Preferences โ†’ Save** 3. Under "Preserve fidelity when sharing this presentation," check: - โœ… **Embed fonts in the file** - โœ… **Embed only the characters used in the presentation** 4. Click **OK** 5. Save your presentation 6. Upload the updated template to TurboDocx :::tip Pro Tip Embedding only characters used in the document significantly reduces file size while ensuring your custom fonts display correctly. ::: ## Font Support in TurboDocx ### PDF Generation (TurboSign) TurboDocx's PDF generator includes many common fonts for high-quality document rendering: #### Sans-Serif Fonts - **Poppins** - Modern geometric font, ideal for headings and contemporary designs - **Lato** - Professional and neutral, excellent for body text and business documents - **Inter** - Screen-optimized font, perfect for digital documents and small text - **Roboto** - Clean and readable, Google's system font - **Open Sans** - Friendly and approachable, widely used in web and print #### Serif Fonts - **Merriweather** - Elegant and readable, designed for long-form reading - **Roboto Slab** - Modern slab serif that pairs well with sans-serif fonts - **Playfair Display** - Stylish display font for headers and decorative text - **Tinos** - Times New Roman alternative, perfect for traditional documents #### Monospace Fonts - **Courier Prime** - Clean monospace font for code snippets and technical content ### System Fonts TurboDocx also supports standard system fonts including: - Arial, Helvetica (substituted with Roboto) - Times New Roman (substituted with Tinos) - Georgia (substituted with Merriweather) - Calibri (substituted with Carlito) - Cambria (substituted with Caladea) :::info Font Substitution TurboDocx automatically substitutes proprietary fonts with high-quality open-source alternatives to ensure consistent rendering across all platforms if font's are not embedded within your Document Template. ::: ## Troubleshooting Font Issues ### Common Problems and Solutions **Font not displaying correctly:** 1. Ensure the font is properly embedded in your template 2. Check that you've uploaded the updated template with embedded fonts 3. Verify the font name matches exactly (including spaces and capitalization) **File size too large:** - Enable "Embed only characters used in document" option - Consider using TurboDocx's built-in fonts instead - Remove unnecessary font variants (bold, italic) if not used **Font substitution occurring:** - Check that the font is properly embedded - Ensure the font license allows embedding - Verify template was saved after enabling font embedding ### Getting Help If you encounter font-related issues: 1. Check that your template uses supported fonts 2. Verify font embedding settings are correctly configured 3. Test with TurboDocx's built-in fonts as alternatives 4. Contact support with specific details about the font and document type :::info Microsoft Support For detailed instructions on font embedding in Microsoft Office, refer to [Microsoft's official documentation](https://support.microsoft.com/en-us/office/benefits-of-embedding-custom-fonts-cb3982aa-ea76-4323-b008-86670f222dbc). ::: --- # AI-Powered Variable Generation API Transform your document workflows with intelligent, context-aware variable generation. This API leverages advanced AI to automatically create rich, relevant content for your template variables by analyzing uploaded files, understanding context, and generating human-quality text based on your specific prompts. ## Overview The AI Variable Generation API represents the cutting edge of document automation, enabling you to: - **Generate Intelligent Content**: Create contextually relevant variable content using AI - **Process File Attachments**: Extract insights from Excel, Word, PDF, and other document formats - **Context-Aware Generation**: Leverage template context for more accurate content creation - **Rich Text Support**: Generate formatted content with HTML, markdown, or plain text - **Smart Data Extraction**: Automatically parse and understand structured data from spreadsheets ### Key Capabilities ๐Ÿง  **AI-Powered Content Creation**: Advanced language models generate human-quality content ๐Ÿ“Ž **File Attachment Processing**: Upload and analyze documents for context-driven generation ๐Ÿ“Š **Spreadsheet Intelligence**: Select specific sheets and extract relevant data automatically ๐ŸŽฏ **Context Integration**: Use existing templates to inform and guide content generation โœจ **Rich Text Generation**: Create formatted content with styling and structure ๐Ÿ”ง **Customizable Prompts**: Fine-tune AI behavior with specific instructions and hints ## How It Works The AI Variable Generation process follows a simple but powerful workflow: 1. **Upload Context Files** - Attach documents (Excel, Word, PDF) that contain relevant data 2. **Define Variable Parameters** - Specify the variable name, placeholder, and generation context 3. **Craft AI Prompts** - Provide specific instructions to guide content generation 4. **Generate Content** - AI analyzes files and context to create intelligent variable content 5. **Integrate Results** - Use generated content directly in your template workflows ## TLDR; Quick Example ๐Ÿš€ Ready to jump in? Here's a complete working example: ```bash curl 'https://api.turbodocx.com/ai/generate/variable/one' \ -H 'Authorization: Bearer YOUR_API_TOKEN' \ -H 'x-rapiddocx-org-id: YOUR_ORG_ID' \ -H 'Content-Type: multipart/form-data' \ -F 'FileResource-123e4567-e89b-12d3-a456-426614174000=@financial-report.xlsx' \ -F 'fileResourceMetadata={"123e4567-e89b-12d3-a456-426614174000":{"selectedSheet":"Q4 Results","hasMultipleSheets":true}}' \ -F 'name=Company Performance Summary' \ -F 'placeholder={Q4Performance}' \ -F 'templateId=template-abc123' \ -F 'aiHint=Generate a professional executive summary of Q4 financial performance based on the attached spreadsheet data' \ -F 'richTextEnabled=true' ``` **Response:** ```json { "data": { "mimeType": "html", "text": "Q4 Performance Summary: Our organization achieved exceptional results in Q4 2024, with revenue growing 23% year-over-year to $4.2M. Key highlights include improved operational efficiency, successful product launches, and strong market penetration in target segments." } } ``` Now let's dive into the complete implementation guide... ## Prerequisites Before you begin generating AI-powered variables, ensure you have: - **API Access Token**: Bearer token for authentication - **Organization ID**: Your organization identifier - **Template Context** (Optional): Existing template ID for enhanced context - **Source Files** (Optional): Documents containing data for AI analysis ### Getting Your Credentials 1. **Login to TurboDocx**: Visit [https://www.turbodocx.com](https://www.turbodocx.com) 2. **Navigate to Settings**: Access your organization settings 3. **API Keys Section**: Generate or retrieve your API access token 4. **Organization ID**: Copy your organization ID from the settings ### Supported File Types The AI Variable Generation API supports a wide range of file formats: | File Type | Extensions | Use Cases | | ----------------- | ----------------------- | ----------------------------------------------- | | **Spreadsheets** | `.xlsx`, `.xls`, `.csv` | Financial data, reports, lists, structured data | | **Documents** | `.docx`, `.doc`, `.pdf` | Contracts, reports, proposals, text content | | **Presentations** | `.pptx`, `.ppt` | Slide content, presentations, visual data | | **Images** | `.png`, `.jpg`, `.jpeg` | Charts, diagrams, visual content analysis | | **Text Files** | `.txt`, `.md` | Plain text, documentation, notes | ## Authentication All AI Variable Generation API requests require authentication using a Bearer token: ```http Authorization: Bearer YOUR_API_TOKEN x-rapiddocx-org-id: YOUR_ORGANIZATION_ID User-Agent: TurboDocx AI Client ``` ## API Reference ### Generate Single Variable Create AI-powered content for a single template variable with optional file attachments. #### Endpoint ```http POST https://api.turbodocx.com/ai/generate/variable/one ``` #### Headers ```http Content-Type: multipart/form-data Authorization: Bearer YOUR_API_TOKEN x-rapiddocx-org-id: YOUR_ORGANIZATION_ID User-Agent: TurboDocx AI Client ``` #### Request Body (Form Data) The request uses multipart form data to support file uploads alongside variable parameters: ```javascript { // File attachment (optional) "FileResource-{uuid}": [BINARY_FILE_DATA], // File metadata (required if file attached) "fileResourceMetadata": "{\"file-uuid\":{\"selectedSheet\":\"Sheet1\",\"hasMultipleSheets\":true}}", // Variable definition "name": "Company Performance Summary", "placeholder": "{PerformanceSummary}", // Context and guidance "templateId": "template-abc123", // Optional: for context "aiHint": "Generate a professional summary of company performance", // Output settings "richTextEnabled": "true" // or "false" } ``` #### Request Parameters | Parameter | Type | Required | Description | | ---------------------- | ------ | ----------- | ---------------------------------------------------- | | `FileResource-{uuid}` | file | No | Binary file data for AI analysis | | `fileResourceMetadata` | string | Conditional | JSON metadata for attached files | | `name` | string | Yes | Display name for the variable | | `placeholder` | string | Yes | Template placeholder (e.g., `{VariableName}`) | | `templateId` | string | No | Template ID for context-aware generation | | `aiHint` | string | Yes | Instructions for AI content generation | | `richTextEnabled` | string | No | Enable HTML/rich text output (`"true"` or `"false"`) | #### File Metadata Structure When attaching files, provide metadata to guide AI processing: ```json { "file-uuid-here": { "selectedSheet": "Q4 Results", // For spreadsheets: specific sheet "hasMultipleSheets": true, // Whether file has multiple sheets "dataRange": "A1:D100", // Optional: specific cell range "contentType": "financial-data" // Optional: content classification } } ``` #### Response ```json { "data": { "mimeType": "text|html|markdown", "text": "Generated variable content based on AI analysis" } } ``` #### Response Fields | Field | Type | Description | | --------------- | ------ | ------------------------------------------- | | `data.mimeType` | string | Content format (`text`, `html`, `markdown`) | | `data.text` | string | Generated variable content | ## Advanced Features ### File Attachment Workflows #### Excel/Spreadsheet Processing When working with spreadsheets, the AI can analyze specific sheets and data ranges: ```bash # Example: Financial data analysis curl 'https://api.turbodocx.com/ai/generate/variable/one' \ -H 'Authorization: Bearer YOUR_API_TOKEN' \ -H 'x-rapiddocx-org-id: YOUR_ORG_ID' \ -H 'Content-Type: multipart/form-data' \ -F 'FileResource-fin123=@quarterly-financials.xlsx' \ -F 'fileResourceMetadata={"fin123":{"selectedSheet":"Income Statement","hasMultipleSheets":true,"dataRange":"A1:F50"}}' \ -F 'name=Revenue Analysis' \ -F 'placeholder={RevenueAnalysis}' \ -F 'aiHint=Analyze the quarterly revenue trends and provide insights on growth patterns, highlighting key metrics and year-over-year changes' \ -F 'richTextEnabled=true' ``` #### Document Content Extraction For text documents, the AI can extract and synthesize key information: ```bash # Example: Contract analysis curl 'https://api.turbodocx.com/ai/generate/variable/one' \ -H 'Authorization: Bearer YOUR_API_TOKEN' \ -H 'x-rapiddocx-org-id: YOUR_ORG_ID' \ -H 'Content-Type: multipart/form-data' \ -F 'FileResource-doc456=@contract-draft.docx' \ -F 'fileResourceMetadata={"doc456":{"contentType":"legal-document"}}' \ -F 'name=Contract Key Terms' \ -F 'placeholder={KeyTerms}' \ -F 'aiHint=Extract and summarize the key terms, obligations, and important dates from this contract document' \ -F 'richTextEnabled=false' ``` ### Context-Aware Generation Leverage existing template context for more accurate content generation: ```bash # Using template context curl 'https://api.turbodocx.com/ai/generate/variable/one' \ -H 'Authorization: Bearer YOUR_API_TOKEN' \ -H 'x-rapiddocx-org-id: YOUR_ORG_ID' \ -H 'Content-Type: multipart/form-data' \ -F 'name=Project Scope Description' \ -F 'placeholder={ProjectScope}' \ -F 'templateId=project-template-789' \ -F 'aiHint=Generate a detailed project scope description that aligns with the project template structure and includes deliverables, timeline, and success criteria' \ -F 'richTextEnabled=true' ``` ### Rich Text Generation Enable rich text for formatted output with HTML styling: ```bash # Rich text example curl 'https://api.turbodocx.com/ai/generate/variable/one' \ -H 'Authorization: Bearer YOUR_API_TOKEN' \ -H 'x-rapiddocx-org-id: YOUR_ORG_ID' \ -H 'Content-Type: multipart/form-data' \ -F 'name=Executive Summary' \ -F 'placeholder={ExecutiveSummary}' \ -F 'aiHint=Create a comprehensive executive summary with bullet points, key metrics, and strategic recommendations formatted for presentation' \ -F 'richTextEnabled=true' ``` **Rich Text Response Example:** ```json { "data": { "mimeType": "html", "text": "Executive SummaryOverview: Q4 2024 delivered exceptional results across all key performance indicators.Revenue Growth: 23% increase year-over-yearMarket Expansion: Successfully entered 3 new geographic marketsOperational Efficiency: 15% improvement in cost optimizationStrategic Recommendations: Continue aggressive growth strategy while maintaining operational excellence." } } ``` ## Code Examples ### Complete Implementation Examples ## Use Cases & Examples ### 1. Financial Report Analysis **Scenario**: Generate executive summaries from quarterly financial spreadsheets ```bash curl 'https://api.turbodocx.com/ai/generate/variable/one' \ -H 'Authorization: Bearer YOUR_API_TOKEN' \ -H 'x-rapiddocx-org-id: YOUR_ORG_ID' \ -H 'Content-Type: multipart/form-data' \ -F 'FileResource-12345=@Q4-financials.xlsx' \ -F 'fileResourceMetadata={"12345":{"selectedSheet":"Summary","hasMultipleSheets":true}}' \ -F 'name=Financial Performance Summary' \ -F 'placeholder={FinancialSummary}' \ -F 'aiHint=Create a concise executive summary highlighting revenue growth, profit margins, and key financial metrics from the Q4 data' \ -F 'richTextEnabled=true' ``` ### 2. Contract Key Terms Extraction **Scenario**: Extract important terms and dates from legal documents ```bash curl 'https://api.turbodocx.com/ai/generate/variable/one' \ -H 'Authorization: Bearer YOUR_API_TOKEN' \ -H 'x-rapiddocx-org-id: YOUR_ORG_ID' \ -H 'Content-Type: multipart/form-data' \ -F 'FileResource-67890=@service-agreement.pdf' \ -F 'name=Contract Terms' \ -F 'placeholder={ContractTerms}' \ -F 'aiHint=Extract contract duration, payment terms, key obligations, and important deadlines in a structured format' \ -F 'richTextEnabled=false' ``` ### 3. Project Proposal Generation **Scenario**: Create project descriptions based on scope documents ```bash curl 'https://api.turbodocx.com/ai/generate/variable/one' \ -H 'Authorization: Bearer YOUR_API_TOKEN' \ -H 'x-rapiddocx-org-id: YOUR_ORG_ID' \ -H 'Content-Type: multipart/form-data' \ -F 'FileResource-abcde=@project-requirements.docx' \ -F 'name=Project Description' \ -F 'placeholder={ProjectDescription}' \ -F 'templateId=proposal-template-123' \ -F 'aiHint=Generate a professional project description including objectives, deliverables, timeline, and success criteria based on the requirements document' \ -F 'richTextEnabled=true' ``` ### 4. Data-Driven Insights **Scenario**: Generate insights from research data and surveys ```bash curl 'https://api.turbodocx.com/ai/generate/variable/one' \ -H 'Authorization: Bearer YOUR_API_TOKEN' \ -H 'x-rapiddocx-org-id: YOUR_ORG_ID' \ -H 'Content-Type: multipart/form-data' \ -F 'FileResource-xyz789=@market-research.xlsx' \ -F 'fileResourceMetadata={"xyz789":{"selectedSheet":"Survey Results","hasMultipleSheets":true}}' \ -F 'name=Market Insights' \ -F 'placeholder={MarketInsights}' \ -F 'aiHint=Analyze the survey data and generate key market insights, trends, and actionable recommendations for product strategy' \ -F 'richTextEnabled=true' ``` ## AI Prompt Engineering ### Writing Effective AI Hints The quality of generated content depends heavily on your AI prompts. Follow these best practices: #### โœ… Do: Be Specific and Clear ```bash # Good prompt 'aiHint=Generate a professional project timeline with 5 key milestones, including dates, deliverables, and success criteria for a 6-month software development project' # Poor prompt 'aiHint=make a timeline' ``` #### โœ… Do: Provide Context and Format Requirements ```bash # Good prompt 'aiHint=Create an executive summary in bullet point format highlighting Q4 revenue (target: $2M), customer acquisition metrics, and year-over-year growth percentages' # Poor prompt 'aiHint=summarize the data' ``` #### โœ… Do: Specify Tone and Audience ```bash # Good prompt 'aiHint=Write a formal, executive-level summary suitable for board presentation, focusing on strategic implications and ROI metrics' # Poor prompt 'aiHint=write a summary' ``` ### Advanced Prompt Techniques #### 1. Role-Based Prompts ```bash 'aiHint=Acting as a senior financial analyst, review the quarterly data and provide insights on revenue trends, cost optimization opportunities, and market positioning recommendations' ``` #### 2. Structured Output Prompts ```bash 'aiHint=Generate a risk assessment with three sections: 1) High-priority risks with mitigation strategies, 2) Medium-priority risks with monitoring plans, 3) Risk summary and overall assessment' ``` #### 3. Data-Driven Prompts ```bash 'aiHint=Based on the attached sales data, calculate month-over-month growth rates, identify top-performing products, and recommend strategies for underperforming segments' ``` ## Best Practices ### File Preparation #### Excel/Spreadsheet Files - **Clean Data**: Remove empty rows, merged cells, and formatting inconsistencies - **Clear Headers**: Use descriptive column headers in the first row - **Consistent Formatting**: Use consistent date formats, number formats, and text casing - **Specific Sheets**: Select the most relevant sheet containing the target data #### Document Files - **Clear Structure**: Use headings, bullet points, and logical organization - **Relevant Content**: Include only content relevant to the AI task - **Text Format**: Ensure text is selectable (not embedded images) - **File Size**: Keep files under 25MB for optimal processing ### Performance Optimization #### Efficient File Usage ```bash # Good: Specific sheet selection 'fileResourceMetadata={"uuid":{"selectedSheet":"Revenue Data","dataRange":"A1:E100"}}' # Poor: Processing entire workbook 'fileResourceMetadata={"uuid":{"hasMultipleSheets":true}}' ``` #### Smart Prompting ```bash # Good: Specific, actionable prompt 'aiHint=Extract the top 5 revenue-generating products from the sales data and provide a brief analysis of their performance trends' # Poor: Vague prompt 'aiHint=tell me about the sales' ``` ### Error Handling #### File Processing Errors - **Check File Format**: Ensure files are in supported formats - **Verify File Size**: Keep attachments under the size limit - **Test File Access**: Ensure files are not corrupted or password-protected #### AI Generation Errors - **Simplify Prompts**: Break complex requests into smaller, specific tasks - **Provide Context**: Include relevant background information in prompts - **Iterate and Refine**: Test prompts and refine based on output quality ### Security Considerations #### Data Privacy - **Sensitive Information**: Review files for confidential data before upload - **Access Controls**: Ensure proper API token management and access restrictions - **Data Retention**: Understand how uploaded files are processed and stored #### API Security - **Token Protection**: Store API tokens securely in environment variables - **HTTPS Only**: Always use HTTPS for API communication - **Rate Limiting**: Implement appropriate rate limiting for production use ## Error Handling & Troubleshooting ### Common HTTP Status Codes | Status Code | Description | Solution | | ----------- | --------------------- | ----------------------------------------------------------- | | `200` | Success | Request completed successfully | | `400` | Bad Request | Check request format, file attachments, and required fields | | `401` | Unauthorized | Verify API token and authentication headers | | `403` | Forbidden | Check organization ID and API permissions | | `413` | Payload Too Large | Reduce file size or compress attachments | | `422` | Unprocessable Entity | Validate AI prompt, file metadata, and parameters | | `429` | Too Many Requests | Implement rate limiting and retry logic | | `500` | Internal Server Error | Contact support if persistent | ### Common Issues #### File Upload Problems **Symptoms**: Files not processing or upload errors **Solutions**: - Verify file format is supported (Excel, Word, PDF, etc.) - Check file size is under 25MB - Ensure file is not corrupted or password-protected - Validate file metadata JSON format #### AI Generation Quality Issues **Symptoms**: Generated content is not relevant or useful **Solutions**: - Provide more specific and detailed AI prompts - Include relevant context in the aiHint parameter - Use templateId for additional context - Break complex requests into smaller, focused tasks #### Context Recognition Problems **Symptoms**: AI not understanding file content correctly **Solutions**: - Use selectedSheet parameter for Excel files - Specify relevant data ranges in file metadata - Ensure file content is clearly structured - Provide additional context in AI prompts ### Debugging Tips 1. **Start Simple**: Test with basic prompts before adding complexity 2. **Validate Files**: Ensure uploaded files are properly formatted and accessible 3. **Check Metadata**: Verify file metadata JSON is properly structured 4. **Monitor Responses**: Review mimeType and content format in responses 5. **Iterate Prompts**: Refine AI hints based on output quality ## Integration Patterns ### Template Workflow Integration Combine AI variable generation with template processing for complete automation: ```javascript // 1. Generate AI content const aiResponse = await generateAIVariable({ file: "financial-data.xlsx", aiHint: "Generate Q4 performance summary", richText: true, }); // 2. Use in template generation const templateData = { templateId: "quarterly-report-template", variables: [ { name: "Q4 Performance", placeholder: "{Q4Performance}", text: aiResponse.data.text, mimeType: aiResponse.data.mimeType, }, ], }; // 3. Generate final document const deliverable = await generateDeliverable(templateData); ``` ### Batch Processing Pattern Process multiple variables with AI for comprehensive content generation: ```javascript const aiVariables = [ { name: "Executive Summary", hint: "Create executive summary" }, { name: "Financial Analysis", hint: "Analyze financial metrics" }, { name: "Market Insights", hint: "Generate market insights" }, ]; const generatedContent = await Promise.all( aiVariables.map((variable) => generateAIVariable({ file: "company-data.xlsx", aiHint: variable.hint, name: variable.name, }) ) ); ``` ## Next Steps ### Advanced AI Features to Explore ๐Ÿ“– **[Template Generation API โ†’](/docs/TurboDocx%20Templating/API%20Templates)** ๐Ÿ“– **[Webhook Integration โ†’](/docs/Webhooks/webhook-configuration)** ๐Ÿ“– **[Bulk Processing โ†’](/docs/Templates/bulk-generation)** ๐Ÿ“– **[API Authentication โ†’](/docs/API/turbodocx-api-documentation)** ### Related Documentation - [Template Management Guide](/docs/Templates/template-management) - [Variable Types and Formatting](/docs/Templates/variable-types) - [Integration Examples](/docs/Integrations) - [Best Practices Guide](/docs/Templates/best-practices) ## Support Need help with AI-powered variable generation? We're here to help: - **Discord Community**: [Join our Discord server](https://discord.gg/NYKwz4BcpX) for real-time support - **Documentation**: [https://docs.turbodocx.com](https://docs.turbodocx.com) - **AI Examples**: Browse our example gallery for inspiration --- Ready to revolutionize your document workflows with AI-powered content generation? Start creating intelligent, context-aware variables that transform how you build documents! ๐Ÿค–โœจ --- # TurboSign Bulk API Integration Send documents for electronic signature at scale. The TurboSign Bulk API allows you to process hundreds or thousands of signature requests in organized batches, with comprehensive tracking and management capabilities. ![TurboSign Single-Step Workflow](/img/turbosign/api/bulk-api.jpg) ## Overview The Bulk API is designed for high-volume signature collection scenarios. Instead of sending documents one at a time, you can create batches that process multiple signature requests efficiently. ### What is Bulk Sending? Bulk sending allows you to send the **same document to multiple recipients** in a single batch operation. Each recipient gets their own personalized copy with customized signature fields and recipient information. **Common Use Cases:** - **Employment Contracts**: Send offer letters or contracts to multiple new hires - **Client Agreements**: Distribute service agreements to hundreds of clients - **Policy Updates**: Send updated terms or policies requiring acknowledgment - **Event Registrations**: Collect signatures from event participants - **Real Estate**: Send disclosure forms to multiple buyers or sellers - **Insurance**: Distribute policy documents requiring signatures ### Key Benefits - **Efficiency**: Create one batch instead of hundreds of individual requests - **Cost Effective**: Batch processing optimizes credit usage - **Tracking**: Monitor progress across all jobs in a batch - **Management**: Cancel, retry, or review jobs as needed - **Scalability**: Handle thousands of signature requests seamlessly - **Organization**: Group related requests together logically ## Key Concepts Understanding these core concepts will help you effectively use the Bulk API. ### Batches A **batch** is a container for multiple document send operations. All documents in a batch share the same source file (PDF, template, or deliverable) but can have different recipients and field configurations. ### Jobs A **job** represents a single document send operation within a batch. Each job corresponds to one set of recipients receiving the shared document. ### Source Types The Bulk API supports four source types for your documents: | Source Type | Description | When to Use | | --------------- | ------------------------------ | ---------------------------------- | | `file` | Upload PDF directly | One-time documents, custom content | | `deliverableId` | Reference existing deliverable | Documents generated from templates | | `templateId` | Use template directly | Reusable document structures | | `fileLink` | URL to document | Documents hosted externally | ### Batch-Level vs Document-Level Configuration **Batch-Level:** - Source file (all jobs use same document) - Default metadata (documentName, documentDescription) - Default sender information **Document-Level:** - Recipients (unique per job) - Signature fields (customized per job) - Optional metadata overrides per job ## Prerequisites Before using the Bulk API, ensure you have: - **API Access Token**: Bearer token for authentication - **Organization ID**: Your organization identifier - **Bulk Sending Enabled**: Feature must be enabled for your organization - **Sufficient Credits**: Credits will be reserved when creating batches ### Getting Your Credentials 1. **Login to TurboDocx**: Visit [https://www.turbodocx.com](https://www.turbodocx.com) 2. **Navigate to Settings**: Access your organization settings 3. **API Keys Section**: Generate or retrieve your API access token 4. **Organization ID**: Copy your organization ID from the settings ![TurboSign API Key](/img/turbosign/api/api-key.png) ![TurboSign Organization ID](/img/turbosign/api/org-id.png) ## Authentication All TurboSign Bulk API requests require authentication using a Bearer token: ```http Authorization: Bearer YOUR_API_TOKEN ``` Additional required headers for all requests: ```http x-rapiddocx-org-id: YOUR_ORGANIZATION_ID User-Agent: TurboDocx API Client ``` :::tip Authentication These authentication headers are identical to the single-step API. If you're already using the single-step API, you can use the same credentials for bulk operations. ::: ## API Endpoints The Bulk API provides four endpoints for complete batch management: | Endpoint | Method | Purpose | | --------------------------------------- | ------ | --------------------------------- | | `/turbosign/bulk/ingest` | POST | Create and ingest a new batch | | `/turbosign/bulk/batches` | GET | List all batches for organization | | `/turbosign/bulk/batch/:batchId/jobs` | GET | List jobs within a specific batch | | `/turbosign/bulk/batch/:batchId/cancel` | POST | Cancel a batch and pending jobs | --- ## Endpoint 1: Ingest Bulk Batch Create a new batch and ingest multiple document send operations. This is the primary endpoint for initiating bulk sending. ### Endpoint ```http POST https://api.turbodocx.com/turbosign/bulk/ingest ``` ### Headers ```http Content-Type: multipart/form-data Authorization: Bearer YOUR_API_TOKEN x-rapiddocx-org-id: YOUR_ORGANIZATION_ID User-Agent: TurboDocx API Client ``` ### Request Body (multipart/form-data) โš ๏ธ **Important**: `documents` must be sent as a JSON string in form-data | Field | Type | Required | Description | | ------------------- | ----------------- | ------------- | ----------------------------------------------------------------- | | sourceType | String | **Yes** | Source type: `file`, `deliverableId`, `templateId`, or `fileLink` | | file | File | Conditional\* | PDF file upload (required when sourceType is `file`) | | sourceValue | String (UUID/URL) | Conditional\* | UUID or URL (required for deliverableId/templateId/fileLink) | | batchName | String | **Yes** | Name for this batch (max 255 chars) | | documentName | String | No | Default document name for all jobs (max 255 chars) | | documentDescription | String | No | Default description for all jobs (max 1000 chars) | | senderName | String | No | Name of sender (max 255 chars) | | senderEmail | String (email) | No | Email of sender | | documents | String (JSON) | **Yes** | JSON string array of document objects | \* **File Source**: Must provide exactly ONE of: - `file` (upload) when sourceType is `file` - `sourceValue` (UUID) when sourceType is `deliverableId` or `templateId` - `sourceValue` (URL) when sourceType is `fileLink` ### Documents Array Format The `documents` parameter must be a JSON string containing an array of document objects: ```json [ { "recipients": [ { "name": "John Smith", "email": "john.smith@company.com", "signingOrder": 1 } ], "fields": [ { "recipientEmail": "john.smith@company.com", "type": "signature", "page": 1, "x": 100, "y": 200, "width": 200, "height": 80, "required": true }, { "recipientEmail": "john.smith@company.com", "type": "date", "page": 1, "x": 100, "y": 300, "width": 150, "height": 30, "required": true } ], "documentName": "Employment Contract - John Smith", "documentDescription": "Please review and sign your employment contract" }, { "recipients": [ { "name": "Jane Doe", "email": "jane.doe@company.com", "signingOrder": 1 } ], "fields": [ { "recipientEmail": "jane.doe@company.com", "type": "signature", "page": 1, "x": 100, "y": 200, "width": 200, "height": 80, "required": true } ], "documentName": "Employment Contract - Jane Doe" } ] ``` **Document Object Properties:** | Property | Type | Required | Description | | ------------------- | ------ | -------- | ----------------------------------------------------------- | | recipients | Array | **Yes** | Array of recipient objects (same format as single-step API) | | fields | Array | **Yes** | Array of field objects (same format as single-step API) | | documentName | String | No | Override batch-level document name for this job | | documentDescription | String | No | Override batch-level description for this job | :::tip Field Types All field types from the single-step API are supported: `signature`, `initial`, `date`, `full_name`, `first_name`, `last_name`, `title`, `company`, `email`, `text`, `checkbox`. See the [single-step API documentation](/docs/TurboSign/API%20Signatures) for details. ::: ### Response (Success) ```json { "success": true, "batchId": "550e8400-e29b-41d4-a716-446655440000", "batchName": "Q4 Employment Contracts", "totalJobs": 50, "status": "pending", "message": "Batch created successfully with 50 jobs. Processing will begin shortly." } ``` ### Response (Error) ```json { "error": "Validation failed for 3 documents", "code": "BulkValidationFailed", "data": { "invalidDocuments": [ { "index": 0, "errors": ["recipients[0].email is required"] }, { "index": 5, "errors": ["fields[0].recipientEmail does not match any recipient"] } ] } } ``` ### Code Example --- ## Endpoint 2: List All Batches Retrieve all batches for your organization with pagination and filtering capabilities. ### Endpoint ```http GET https://api.turbodocx.com/turbosign/bulk/batches ``` ### Headers ```http Authorization: Bearer YOUR_API_TOKEN x-rapiddocx-org-id: YOUR_ORGANIZATION_ID User-Agent: TurboDocx API Client ``` ### Query Parameters | Parameter | Type | Required | Description | | --------- | ------------------ | -------- | ----------------------------------------------------------------------------- | | limit | Number | No | Number of batches to return (default: 20, max: 100) | | offset | Number | No | Number of batches to skip (default: 0) | | query | String | No | Search query to filter batches by name | | status | String or String[] | No | Filter by status: `pending`, `processing`, `completed`, `failed`, `cancelled` | | startDate | String (ISO 8601) | No | Filter batches created on or after this date | | endDate | String (ISO 8601) | No | Filter batches created on or before this date | ### Response ```json { "data": { "batches": [ { "id": "550e8400-e29b-41d4-a716-446655440000", "name": "Q4 Employment Contracts", "status": "completed", "totalJobs": 50, "succeededJobs": 48, "failedJobs": 2, "pendingJobs": 0, "createdOn": "2025-01-15T10:30:00Z", "updatedOn": "2025-01-15T14:25:00Z", "metadata": {} }, { "id": "660e8400-e29b-41d4-a716-446655440001", "name": "Client Agreements - January 2025", "status": "processing", "totalJobs": 100, "succeededJobs": 75, "failedJobs": 5, "pendingJobs": 20, "createdOn": "2025-01-16T09:00:00Z", "updatedOn": "2025-01-16T12:30:00Z", "metadata": {} } ], "totalRecords": 2 } } ``` ### Code Example --- ## Endpoint 3: List Jobs in Batch Retrieve all jobs within a specific batch with detailed status information. ### Endpoint ```http GET https://api.turbodocx.com/turbosign/bulk/batch/:batchId/jobs ``` ### Headers ```http Authorization: Bearer YOUR_API_TOKEN x-rapiddocx-org-id: YOUR_ORGANIZATION_ID User-Agent: TurboDocx API Client ``` ### Path Parameters | Parameter | Type | Required | Description | | --------- | ------------- | -------- | --------------- | | batchId | String (UUID) | **Yes** | ID of the batch | ### Query Parameters | Parameter | Type | Required | Description | | --------- | ------------------ | -------- | ------------------------------------------------ | | limit | Number | No | Number of jobs to return (default: 20, max: 100) | | offset | Number | No | Number of jobs to skip (default: 0) | | status | String or String[] | No | Filter by job status | | query | String | No | Search query to filter jobs | ### Response ```json { "data": { "batchId": "550e8400-e29b-41d4-a716-446655440000", "batchName": "Q4 Employment Contracts", "batchStatus": "completed", "jobs": [ { "id": "770e8400-e29b-41d4-a716-446655440000", "batchId": "550e8400-e29b-41d4-a716-446655440000", "documentId": "880e8400-e29b-41d4-a716-446655440000", "documentName": "Employment Contract - John Smith", "status": "SUCCEEDED", "recipientEmails": ["john.smith@company.com"], "attempts": 0, "errorCode": null, "errorMessage": null, "createdOn": "2025-01-15T10:30:00Z", "updatedOn": "2025-01-15T11:45:00Z", "lastAttemptedAt": "2025-01-15T11:45:00Z" }, { "id": "770e8400-e29b-41d4-a716-446655440001", "batchId": "550e8400-e29b-41d4-a716-446655440000", "documentId": null, "documentName": "Employment Contract - Jane Doe", "status": "FAILED", "recipientEmails": ["jane.doe@company.com"], "attempts": 1, "errorCode": "INVALID_EMAIL", "errorMessage": "Invalid recipient email address", "createdOn": "2025-01-15T10:30:00Z", "updatedOn": "2025-01-15T10:31:00Z", "lastAttemptedAt": "2025-01-15T10:31:00Z" } ], "totalJobs": 50, "totalRecords": 50, "succeededJobs": 48, "failedJobs": 2, "pendingJobs": 0 } } ``` ### Code Example --- ## Endpoint 4: Cancel Batch Cancel a batch and stop all pending jobs. Already completed jobs are not affected. ### Endpoint ```http POST https://api.turbodocx.com/turbosign/bulk/batch/:batchId/cancel ``` ### Headers ```http Authorization: Bearer YOUR_API_TOKEN x-rapiddocx-org-id: YOUR_ORGANIZATION_ID User-Agent: TurboDocx API Client ``` ### Path Parameters | Parameter | Type | Required | Description | | --------- | ------------- | -------- | ------------------------- | | batchId | String (UUID) | **Yes** | ID of the batch to cancel | ### Response ```json { "success": true, "message": "Batch cancelled. 20 job(s) stopped, 20 credit(s) refunded.", "batchId": "550e8400-e29b-41d4-a716-446655440000", "cancelledJobs": 20, "succeededJobs": 30, "refundedCredits": 20, "status": "cancelled" } ``` ### Code Example :::warning Cancellation Notice - Only pending and processing jobs will be cancelled - Already succeeded jobs are not affected - Credits are refunded only for cancelled jobs - Cancellation cannot be undone ::: --- ## Best Practices ### Batch Size **Recommended batch sizes:** - Small batches (10-50 jobs): Faster processing, easier to monitor - Medium batches (50-200 jobs): Balanced efficiency - Large batches (200-1000 jobs): Maximum efficiency for large-scale operations :::tip Batch Size Strategy For first-time use, start with smaller batches (10-20 jobs) to validate your configuration. Once confident, scale up to larger batches. ::: ### Error Handling **Always check for validation errors:** ```javascript if (response.data.code === "BulkValidationFailed") { const errors = response.data.data.invalidDocuments; errors.forEach((err) => { console.log(`Document ${err.index}: ${err.errors.join(", ")}`); }); } ``` **Monitor job failures:** - Regularly check job status - Review error messages for failed jobs - Fix issues and retry with corrected data ### Credit Management **Credits are reserved when batch is created:** - 1 credit per recipient per job - Credits are consumed as jobs succeed - Credits are refunded for failed or cancelled jobs **Example**: Batch with 50 jobs, 1 recipient each = 50 credits reserved ### Performance Tips 1. **Use templateId or deliverableId**: Faster than file uploads 2. **Batch similar documents**: Group documents with similar configurations 3. **Validate data before submission**: Prevent validation errors 4. **Use pagination**: When listing large result sets 5. **Implement webhooks**: For real-time status updates (see [Webhooks documentation](/docs/TurboSign/Webhooks)) ### Data Validation **Before creating a batch, validate:** - All email addresses are valid - Field positioning doesn't overlap - RecipientEmail in fields matches actual recipients - Required fields are present --- ## Error Codes Common error codes you may encounter: | Code | Description | Solution | | ---------------------- | ------------------------------------------- | --------------------------------------- | | `FileUploadRequired` | No file provided when sourceType is 'file' | Include file in form-data | | `SourceValueRequired` | No sourceValue for deliverableId/templateId | Provide valid UUID | | `InvalidSourceValue` | sourceValue provided with file upload | Remove sourceValue when using file | | `InvalidDocumentsJSON` | Documents JSON is malformed | Validate JSON structure | | `BulkValidationFailed` | One or more documents failed validation | Check data.invalidDocuments for details | | `DeliverableNotFound` | deliverableId doesn't exist | Verify deliverable exists | | `TemplateNotFound` | templateId doesn't exist | Verify template exists | | `BatchNotFound` | batchId doesn't exist | Check batch ID | | `BatchNotCancellable` | Batch already completed | Cannot cancel completed batches | | `InsufficientCredits` | Not enough credits for batch | Add credits to organization | --- ## Limits and Quotas ### Batch Limits | Limit | Value | | -------------------------- | -------------- | | Maximum jobs per batch | 1,000 | | Maximum document size | 25 MB | | Maximum recipients per job | 50 | | Maximum fields per job | 100 | | Maximum batch name length | 255 characters | ### Rate Limits | Endpoint | Rate Limit | | ------------ | ------------------ | | Ingest batch | 10 requests/minute | | List batches | 60 requests/minute | | List jobs | 60 requests/minute | | Cancel batch | 10 requests/minute | :::warning Rate Limiting If you exceed rate limits, you'll receive a `429 Too Many Requests` response. Implement exponential backoff in your retry logic. ::: ### Credit Consumption - **1 credit per recipient**: Each recipient in each job consumes 1 credit - **Reserved on creation**: Credits are reserved when batch is created - **Consumed on success**: Credits are consumed when job succeeds - **Refunded on failure/cancellation**: Credits are refunded for failed or cancelled jobs **Example Calculations:** - 100 jobs ร— 1 recipient = 100 credits - 50 jobs ร— 2 recipients = 100 credits - 200 jobs ร— 1 recipient = 200 credits --- ## Troubleshooting ### Batch Stuck in "Processing" **Possible causes:** - High system load (normal during peak times) - Large batch size - Complex document processing **Solutions:** - Wait for processing to complete (usually 1 hour ### Jobs Failing with "Invalid Email" **Cause**: Email validation failed **Solutions:** - Verify email format - Check for typos - Ensure no special characters in local part ### Credits Not Refunded **Cause**: Jobs succeeded before cancellation **Solution**: Credits are only refunded for cancelled jobs. Already succeeded jobs consume credits. ### "DeliverableNotFound" Error **Possible causes:** - Wrong organization ID - Deliverable deleted - Incorrect deliverable ID **Solutions:** - Verify deliverable exists in your organization - Check organization ID matches - Generate new deliverable if needed --- ## Next Steps Now that you understand the Bulk API, you might want to: - **Set up webhooks**: Get real-time notifications for batch and job status changes. See [Webhooks documentation](/docs/TurboSign/Webhooks) - **Explore single-step API**: For individual document sending. See [Single-Step API documentation](/docs/TurboSign/API%20Signatures) - **Review field types**: Learn about all available signature field types - **Integrate with your app**: Build bulk sending into your application workflow --- _Have questions? Contact our support team at support@turbodocx.com_ --- # TurboSign API Integration This comprehensive guide walks you through the TurboSign single-step API integration. Learn how to programmatically upload documents, configure recipients, set up signature fields, and send documents for electronic signatures using a single, streamlined API call. ![TurboSign API Integration Overview](/img/turbosign/api/api-illustration.png) ## Overview The TurboSign API provides a simplified single-step process to prepare documents for electronic signatures. Instead of multiple API calls, you can now accomplish everything in one request. ### Two Endpoint Options TurboSign offers two single-step endpoints to fit different workflows: 1. **Prepare for Review** - Upload and get preview URL (no emails sent) 2. **Prepare for Signing** - Upload and send immediately (emails sent) ![TurboSign Single-Step Workflow](/img/turbosign/api/types.svg) ### Key Features - **Single API Call**: Upload document, add recipients, and configure fields in one request - **RESTful API**: Standard HTTP methods with multipart/form-data - **Bearer Token Authentication**: Secure API access using JWT tokens - **Multiple Recipients**: Support for multiple signers with custom signing order - **Flexible Field Placement**: Position signature fields using anchors or coordinates - **Multiple File Sources**: Upload file, or reference deliverableId, templateId, or fileLink - **Real-time Status Updates**: Track document status throughout the signing process - **Webhook Integration**: Receive notifications when signing is complete ## TLDR; Complete Working Example ๐Ÿš€ Don't want to read all the details? Here's what you need to know: ### Available Field Types | Type | Description | Use Case | | ------------ | -------------------------- | -------------------------------------------- | | `signature` | Electronic signature field | Legal signatures | | `initial` | Initial field | Document initials, paragraph acknowledgments | | `date` | Date picker field | Signing date, agreement date | | `full_name` | Full name field | Automatically fills signer's complete name | | `first_name` | First name field | Automatically fills signer's first name | | `last_name` | Last name field | Automatically fills signer's last name | | `title` | Title/job title field | Professional title or position | | `company` | Company name field | Organization or company name | | `email` | Email address field | Signer's email address | | `text` | Generic text input field | Custom text, notes, or any other text input | | `checkbox` | Checkbox field | Acknowledgments, consent, agreements | ### Quick Start: Prepare for Signing (Most Common) Use this endpoint to send documents immediately for signing: ### Alternative: Prepare for Review Use this endpoint when you need a preview URL to verify field placement: ### Quick Comparison | Feature | prepare-for-review | prepare-for-signing | | -------------------- | ------------------------------ | ------------------------- | | Sends emails? | โŒ No | โœ… Yes | | Returns preview URL? | โœ… Yes | โŒ No | | Final status | REVIEW_READY | UNDER_REVIEW | | Use when | Need to verify field placement | Ready to send immediately | Now that you've seen the whole thing, let's dive into the details... ## Prerequisites Before you begin, ensure you have: - **API Access Token**: Bearer token for authentication - **Organization ID**: Your organization identifier - **PDF Document**: Document ready for signature collection ### Getting Your Credentials 1. **Login to TurboDocx**: Visit [https://www.turbodocx.com](https://www.turbodocx.com) 2. **Navigate to Settings**: Access your organization settings 3. **API Keys Section**: Generate or retrieve your API access token 4. **Organization ID**: Copy your organization ID from the settings ![TurboSign API Key](/img/turbosign/api/api-key.png) ![TurboSign Organization ID](/img/turbosign/api/org-id.png) ## Authentication All TurboSign API requests require authentication using a Bearer token in the Authorization header: ```http Authorization: Bearer YOUR_API_TOKEN ``` Additional required headers for all requests: ```http x-rapiddocx-org-id: YOUR_ORGANIZATION_ID User-Agent: TurboDocx API Client ``` ## Choosing Your Endpoint TurboSign offers two single-step endpoints to fit different workflows. Choose the one that best matches your use case. ### When to Use prepare-for-review โœ… **Use this endpoint when you want to:** - Verify field placement before sending to recipients - Get a preview URL to review the document in TurboSign's interface - Manually trigger email sending after verifying field placement - Ensure correct field positioning before recipients receive emails **Workflow**: Upload โ†’ Get preview URL โ†’ Review in browser โ†’ Manually send when ready ### When to Use prepare-for-signing โœ… **Use this endpoint when you want to:** - Send documents immediately without preview step - Automate the entire signature process end-to-end - Use with verified templates or confident field positioning - Skip manual review and send directly to recipients **Workflow**: Upload โ†’ Emails sent automatically โ†’ Recipients sign ## Endpoint 1: Prepare for Review Creates a signature request and returns a preview URL. No emails are sent to recipients. ### Endpoint ```http POST https://api.turbodocx.com/turbosign/single/prepare-for-review ``` ### Headers ```http Content-Type: multipart/form-data Authorization: Bearer YOUR_API_TOKEN x-rapiddocx-org-id: YOUR_ORGANIZATION_ID User-Agent: TurboDocx API Client ``` ### Request Body (multipart/form-data) โš ๏ธ **Important**: Recipients and fields must be sent as JSON strings in form-data | Field | Type | Required | Description | | ------------------- | -------------- | ------------- | ------------------------------------------ | | file | File | Conditional\* | PDF, DOCX, or PPTX file to upload | | deliverableId | String (UUID) | Conditional\* | Reference to existing deliverable | | templateId | String (UUID) | Conditional\* | Reference to existing template | | fileLink | String (URL) | Conditional\* | URL to download file from | | documentName | String | No | Document name in TurboSign (max 255 chars) | | documentDescription | String | No | Document description (max 1000 chars) | | recipients | String (JSON) | **Yes** | JSON string array of recipient objects | | fields | String (JSON) | **Yes** | JSON string array of field objects | | senderName | String | No | Name of sender (max 255 chars) | | senderEmail | String (email) | No | Email of sender | | ccEmails | String (JSON) | No | JSON string array of CC email addresses | \* **File Source**: Must provide exactly ONE of: file, deliverableId, templateId, or fileLink ### Recipients JSON Format Recipients must be stringified before adding to form-data: ```javascript const recipients = JSON.stringify([ { name: "John Smith", email: "john.smith@company.com", signingOrder: 1, metadata: { color: "hsl(200, 75%, 50%)", lightColor: "hsl(200, 75%, 93%)", }, }, { name: "Jane Doe", email: "jane.doe@partner.com", signingOrder: 2, metadata: { color: "hsl(270, 75%, 50%)", lightColor: "hsl(270, 75%, 93%)", }, }, ]); formData.append("recipients", recipients); ``` ### Fields JSON Format Fields reference recipients by **email** (not recipientId) and must be stringified: #### Template-based (recommended): ```javascript const fields = JSON.stringify([ { recipientEmail: "john.smith@company.com", type: "signature", template: { anchor: "{Signature1}", placement: "replace", size: { width: 200, height: 80 }, offset: { x: 0, y: 0 }, }, required: true, }, { recipientEmail: "john.smith@company.com", type: "date", template: { anchor: "{Date1}", placement: "replace", size: { width: 150, height: 30 }, }, required: true, }, ]); formData.append("fields", fields); ``` #### Coordinate-based: ```javascript const fields = JSON.stringify([ { recipientEmail: "john.smith@company.com", type: "signature", page: 1, x: 100, y: 200, width: 200, height: 80, pageWidth: 612, pageHeight: 792, required: true, }, ]); formData.append("fields", fields); ``` ### Response ```json { "success": true, "documentId": "4a20eca5-7944-430c-97d5-fcce4be24296", "status": "REVIEW_READY", "previewUrl": "https://www.turbodocx.com/sign/preview/abc123...", "recipients": [ { "id": "5f673f37-9912-4e72-85aa-8f3649760f6b", "name": "John Smith", "email": "john.smith@company.com", "signingOrder": 1, "metadata": { "color": "hsl(200, 75%, 50%)", "lightColor": "hsl(200, 75%, 93%)" } } ], "message": "Document prepared for review. Use the preview URL to review and assign fields." } ``` ### Response Fields | Field | Type | Description | | ---------- | ------------- | ---------------------------------------------- | | success | Boolean | Request success status | | documentId | String (UUID) | Unique document identifier - save for tracking | | status | String | Document status (REVIEW_READY) | | previewUrl | String (URL) | URL to preview and verify document | | recipients | Array | Array of recipient objects with generated IDs | | message | String | Human-readable success message | ### Code Examples ### Next Steps After Review Once you've reviewed the document via the preview URL click "Send for Signing" button on the preview page to send emails to recipients ## Endpoint 2: Prepare for Signing Creates a signature request and immediately sends emails to recipients. Use this for production workflows when you're confident in your field positioning. ### Endpoint ```http POST https://api.turbodocx.com/turbosign/single/prepare-for-signing ``` ### Headers ```http Content-Type: multipart/form-data Authorization: Bearer YOUR_API_TOKEN x-rapiddocx-org-id: YOUR_ORGANIZATION_ID User-Agent: TurboDocx API Client ``` ### Request Body (multipart/form-data) The request format is **identical** to prepare-for-review. See the "Endpoint 1: Prepare for Review" section above for detailed field documentation. ### Response ```json { "success": true, "documentId": "4a20eca5-7944-430c-97d5-fcce4be24296", "message": "Document sent for signing. Emails are being sent to recipients." } ``` ### Response Fields | Field | Type | Description | | ---------- | ------------- | ---------------------------------------------- | | success | Boolean | Request success status | | documentId | String (UUID) | Unique document identifier - save for tracking | | message | String | Human-readable success message | โš ๏ธ **Note**: This endpoint returns immediately after creating the document. Email sending happens asynchronously in the background. Use webhooks to receive notification when the document is fully signed. ### Code Examples ## Recipients Reference ### Recipient Properties Each recipient object in the `recipients` array should contain the following properties: | Property | Type | Required | Description | | ------------ | -------------- | -------- | ---------------------------------------------------------- | | name | String | Yes | Full name of the recipient/signer | | email | String (email) | Yes | Email address of the recipient (must be unique) | | signingOrder | Number | Yes | Order in which recipient should sign (starts at 1) | | metadata | Object | No | Optional metadata for UI customization (color, lightColor) | ### Metadata Object (Optional) The `metadata` object allows you to customize the recipient's UI appearance: | Property | Type | Description | Example | | ---------- | ------ | -------------------------------------------------- | ---------------------- | | color | String | Primary color for recipient in HSL format | `"hsl(200, 75%, 50%)"` | | lightColor | String | Light background color for recipient in HSL format | `"hsl(200, 75%, 93%)"` | ### Example Recipients Array ```json [ { "name": "John Smith", "email": "john.smith@company.com", "signingOrder": 1 }, { "name": "Jane Doe", "email": "jane.doe@partner.com", "signingOrder": 2 } ] ``` ### With Optional Metadata ```json [ { "name": "John Smith", "email": "john.smith@company.com", "signingOrder": 1, "metadata": { "color": "hsl(200, 75%, 50%)", "lightColor": "hsl(200, 75%, 93%)" } } ] ``` ## Field Types Reference ### Complete Field Type List | Type | Description | Auto-filled | Use Case | | ------------ | -------------------------- | ----------- | -------------------------------------------- | | `signature` | Electronic signature field | No | Legal signatures, agreements | | `initial` | Initial field | No | Document initials, paragraph acknowledgments | | `date` | Date picker field | No | Signing date, agreement date | | `full_name` | Full name field | Yes | Automatically fills signer's complete name | | `first_name` | First name field | Yes | Automatically fills signer's first name | | `last_name` | Last name field | Yes | Automatically fills signer's last name | | `title` | Title/job title field | No | Professional title or position | | `company` | Company name field | No | Organization or company name | | `email` | Email address field | Yes | Signer's email address | | `text` | Generic text input field | No | Custom text, notes, or any other text input | | `checkbox` | Checkbox field | No | Acknowledgments, consent, agreements | ### Field Configuration Properties #### Common Properties (All Field Types) | Property | Type | Required | Description | | --------------- | ------- | -------- | -------------------------------------------------------------- | | recipientEmail | String | Yes | Email address of recipient (matches email in recipients array) | | type | String | Yes | Field type (see table above) | | required | Boolean | No | Whether field must be completed (default: true) | | defaultValue | String | No | Pre-filled value for the field | | isReadonly | Boolean | No | Makes field non-editable (for prefilled values) | | backgroundColor | String | No | Custom background color (hex or rgba) | #### Template-based Properties | Property | Type | Required | Description | | ---------------------- | ------- | -------- | --------------------------------------------------------------- | | template.anchor | String | Yes | Text anchor to find in document (e.g., "{Signature1}") | | template.placement | String | Yes | How to place field: "replace", "before", "after" | | template.size | Object | Yes | Field dimensions: { width: number, height: number } | | template.offset | Object | No | Position offset: { x: number, y: number } (default: {x:0, y:0}) | | template.caseSensitive | Boolean | No | Whether anchor search is case-sensitive (default: true) | | template.useRegex | Boolean | No | Whether to treat anchor as regex pattern (default: false) | #### Coordinate-based Properties | Property | Type | Required | Description | | ---------- | ------ | -------- | ------------------------------------------------------------------ | | page | Number | Yes | Page number (starts at 1) | | x | Number | Yes | Horizontal position from left edge (pixels) | | y | Number | Yes | Vertical position from top edge (pixels) | | width | Number | Yes | Field width in pixels | | height | Number | Yes | Field height in pixels | | pageWidth | Number | No | Total page width in pixels (optional, for responsive positioning) | | pageHeight | Number | No | Total page height in pixels (optional, for responsive positioning) | ### Field Type Special Behaviors **signature & initial** - Draws a signature pad for user input - Can be text-based or drawn - Cryptographically signed and hashed for legal validity **date** - Shows date picker interface - Format: MM/DD/YYYY (US) or DD/MM/YYYY (configurable) - Can set defaultValue to "today" for auto-population **full_name, first_name, last_name, email** - Auto-populated from recipient profile - Can be overridden by recipient if needed - Useful for legal compliance and form filling **text** - Single-line text input by default - Supports defaultValue for prefilled content - Use for titles, company names, custom fields **checkbox** - Boolean true/false value - Useful for acknowledgments and consent - Can have label text next to checkbox ## Field Positioning Methods TurboSign supports two methods for positioning signature fields in your documents. ### Method 1: Template-based Positioning (Recommended) Uses text anchors in your PDF as placeholders. TurboSign searches for these anchors and places fields accordingly. #### Advantages โœ… Easy to update field positions (just edit the PDF) โœ… No need to measure exact coordinates โœ… Works across different page sizes โœ… More maintainable for non-technical users โœ… Handles document variations gracefully #### How it Works 1. **Add anchor text to your PDF**: Place text like `{Signature1}`, `{Date1}`, `{Initial1}` where you want fields 2. **Configure fields with anchor references**: Tell TurboSign what to search for 3. **TurboSign finds and replaces**: Anchors are found and replaced with interactive fields #### Anchor Configuration Example ```json { "recipientEmail": "john.smith@company.com", "type": "signature", "template": { "anchor": "{Signature1}", "placement": "replace", "size": { "width": 200, "height": 80 }, "offset": { "x": 0, "y": 0 }, "caseSensitive": true, "useRegex": false }, "required": true } ``` #### Placement Options - **replace**: Removes the anchor text and places the field in its position - **before**: Places field before the anchor text (anchor remains visible) - **after**: Places field after the anchor text (anchor remains visible) #### Offset Usage Offset allows fine-tuning field position relative to the anchor: - `x`: Positive moves right, negative moves left (pixels) - `y`: Positive moves down, negative moves up (pixels) ```json { "anchor": "{Signature1}", "placement": "replace", "size": { "width": 200, "height": 80 }, "offset": { "x": 10, "y": -5 } // 10px right, 5px up from anchor } ``` ### Method 2: Coordinate-based Positioning Uses exact pixel coordinates to position fields on specific pages. Best for precise control or when anchors aren't feasible. #### Advantages โœ… Pixel-perfect precision โœ… Works with PDFs that can't be edited โœ… Programmatically generated positions โœ… Useful for form-filling scenarios โœ… Consistent placement across documents #### How it Works 1. **Measure exact x,y coordinates** in your PDF (using PDF editor or viewer) 2. **Provide page number, coordinates, and dimensions** 3. **TurboSign places fields at exact positions** #### Coordinate Configuration Example ```json { "recipientEmail": "john.smith@company.com", "type": "signature", "page": 1, "x": 100, "y": 200, "width": 200, "height": 80, "pageWidth": 612, "pageHeight": 792, "required": true } ``` #### Coordinate System Reference - **Origin (0,0)**: Top-left corner of the page - **X-axis**: Increases from left to right - **Y-axis**: Increases from top to bottom - **Standard US Letter**: 612 x 792 pixels (8.5" x 11" at 72 DPI) - **Standard A4**: 595 x 842 pixels (210mm x 297mm at 72 DPI) #### Coordinate Validation Fields must stay within page boundaries: - `x โ‰ฅ 0` - `y โ‰ฅ 0` - `x + width โ‰ค pageWidth` - `y + height โ‰ค pageHeight` #### Measuring Coordinates **Adobe Acrobat Pro**: 1. View โ†’ Show/Hide โ†’ Rulers & Grids โ†’ Rulers 2. Hover over location to see coordinates **Browser Developer Tools**: 1. Open PDF in browser 2. Right-click โ†’ Inspect 3. Use element inspector to measure positions **PDF Editing Software**: - Use built-in coordinate display - Draw rectangles to measure dimensions #### Quick Coordinate Example Position a signature field at bottom-right of a US Letter page: ```json { "recipientEmail": "john@example.com", "type": "signature", "page": 1, "x": 362, // 612 - 250 = 362 (right aligned with 50px margin) "y": 662, // 792 - 130 = 662 (bottom aligned with 50px margin) "width": 200, "height": 80, "pageWidth": 612, "pageHeight": 792 } ``` ## Best Practices ### Workflow Selection **When You Need Field Verification**: - โœ… Use `prepare-for-review` to get preview URLs - โœ… Verify field placement in browser before sending - โœ… Manually trigger sending after review - โœ… Useful for new document templates or complex field layouts **When Field Placement Is Verified**: - โœ… Use `prepare-for-signing` to send immediately - โœ… Implement webhook handlers for completion notifications - โœ… Use proper error handling and retry logic - โœ… Monitor API rate limits - โœ… Log all document IDs for tracking **General Tips**: - โœ… Use deliverableId or templateId to avoid repeated uploads - โœ… Test with your own email addresses first - โœ… Both endpoints are production-ready ### Security - **Never expose API tokens**: Store tokens securely in environment variables or secrets management - **Use HTTPS only**: All API calls must use HTTPS in production (API enforces this) - **Validate inputs**: Always validate recipient emails and document names before submission - **Implement rate limiting**: Respect API rate limits to avoid throttling - **Rotate tokens regularly**: Generate new API tokens periodically - **Use webhook signatures**: Verify webhook payloads using HMAC signatures - **Sanitize user inputs**: Validate and sanitize all user-provided data ### Error Handling - **Check HTTP status codes**: Always verify response status before processing - **Handle timeouts**: Implement retry logic with exponential backoff for network failures - **Log API responses**: Keep detailed logs for debugging and monitoring - **Validate responses**: Check response structure before accessing data - **Graceful degradation**: Have fallback behavior for API failures - **User-friendly errors**: Display helpful error messages to end users ### Performance **File Upload Optimization**: - Compress PDFs when possible (aim for <5MB) - Use fileLink for files already in cloud storage (S3, GCS, etc.) - Use deliverableId/templateId to reference existing documents - Avoid uploading the same document multiple times **API Efficiency**: - Single-step endpoints reduce API calls from 3 to 1 (3x faster) - Batch multiple documents in parallel requests when possible - Use connection pooling for multiple requests - Implement exponential backoff for retries - Cache responses when appropriate **Network Optimization**: - Use CDN for document hosting when using fileLink - Enable gzip compression for API requests - Minimize payload sizes by only including required fields ### Document Preparation **Text Anchors (Template-based)**: - Use consistent anchor naming: `{FieldType}{Number}` (e.g., `{Signature1}`, `{Date1}`) - Place anchors exactly where you want fields - Use unique anchors (avoid duplicates) - Test anchor placement with prepare-for-review first - Document your anchor naming convention **Coordinate-based**: - Verify coordinates work across different PDF viewers - Account for page margins and headers/footers - Use standard page sizes when possible - Test on actual page dimensions (don't assume) - Validate boundaries before submission **Document Validation**: - Ensure PDFs are not password-protected or corrupted - Verify all pages are readable - Test with actual documents before production - Keep backup copies of source documents ### JSON String Formatting โš ๏ธ **Critical**: Recipients and fields must be valid JSON strings when added to form-data. **Correct**: ```javascript const recipients = JSON.stringify([ { name: "John", email: "john@example.com", signingOrder: 1 }, ]); formData.append("recipients", recipients); ``` **Incorrect**: ```javascript // Don't send object/array directly! formData.append("recipients", recipientsArray); // โŒ Wrong formData.append("recipients", "[{...}]"); // โŒ Wrong (string literal, not stringified) ``` **Python Example**: ```python recipients = json.dumps([ {"name": "John", "email": "john@example.com", "signingOrder": 1} ]) form_data['recipients'] = recipients ``` **C# Example**: ```csharp using System.Text.Json; var recipients = JsonSerializer.Serialize(new[] { new { name = "John", email = "john@example.com", signingOrder = 1 } }); formData.Add(new StringContent(recipients), "recipients"); ``` ## Error Handling & Troubleshooting ### Common HTTP Status Codes | Status Code | Description | Solution | | ----------- | --------------------- | --------------------------------------------- | | `200` | Success | Request completed successfully | | `400` | Bad Request | Check request body format and required fields | | `401` | Unauthorized | Verify API token and headers | | `403` | Forbidden | Check organization ID and permissions | | `404` | Not Found | Verify endpoint URLs are correct | | `422` | Unprocessable Entity | Validate field values and constraints | | `429` | Too Many Requests | Implement rate limiting and retry logic | | `500` | Internal Server Error | Contact support if persistent | ### Common Issues #### JSON String Formatting Errors **Symptoms**: 400 Bad Request with message "Invalid JSON in recipients/fields" **Solutions**: - โœ… Verify JSON.stringify() or equivalent is used for recipients, fields, ccEmails - โœ… Check JSON is valid using JSONLint or similar validator - โœ… Ensure proper escaping of quotes in JSON strings - โœ… Test with minimal example first (1 recipient, 1 field) **Example Error Response**: ```json { "error": "Invalid JSON string in recipients field", "code": "JSONParseError", "details": "Unexpected token at position 45" } ``` **Debug Steps**: 1. Log the JSON string before sending 2. Validate JSON with online validator 3. Check for special characters or unescaped quotes 4. Test with hardcoded valid JSON first #### File Source Errors **Symptoms**: 400 Bad Request with message about file source **Solutions**: - โœ… Provide exactly ONE of: file, deliverableId, templateId, fileId, fileLink - โœ… Verify UUIDs are valid format (8-4-4-4-12 characters) - โœ… Check file upload isn't corrupted or empty - โœ… Ensure fileLink is accessible (not behind auth) **Example Error Response**: ```json { "error": "Must provide exactly one file source", "code": "InvalidFileSource" } ``` #### Recipients/Fields Mismatch **Symptoms**: 400 Bad Request about missing recipient or email mismatch **Solutions**: - โœ… Verify recipientEmail in fields matches email in recipients array **exactly** - โœ… Check for typos in email addresses - โœ… Ensure all fields reference valid recipients - โœ… Email matching is case-sensitive **Example**: ```javascript // Recipients array [{ email: "john.smith@company.com", ... }] // Fields array - must match exactly [{ recipientEmail: "john.smith@company.com", ... }] // โœ… Correct [{ recipientEmail: "John.Smith@company.com", ... }] // โŒ Wrong (case mismatch) ``` #### Authentication Failures **Symptoms**: 401 Unauthorized responses **Solutions**: - โœ… Verify API token is correct and not expired - โœ… Check that `x-rapiddocx-org-id` header matches your organization - โœ… Ensure Bearer token format: `Bearer YOUR_TOKEN` (with space) - โœ… Confirm token has necessary permissions **Example Correct Headers**: ```http Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9... x-rapiddocx-org-id: a1b2c3d4-e5f6-7890-abcd-ef1234567890 ``` #### Document Upload Failures **Symptoms**: Upload returns error or times out **Solutions**: - โœ… Verify PDF file is not corrupted or password-protected - โœ… Check file size is under maximum limit (typically 10MB) - โœ… Ensure file is actually a PDF (check MIME type) - โœ… Verify network connection and try again - โœ… For fileLink, ensure URL is accessible #### Field Positioning Problems **Symptoms**: Signature fields appear in wrong locations or not at all **Template-based Solutions**: - โœ… Verify anchor text exists in the PDF document - โœ… Check anchor text matches exactly (case-sensitive by default) - โœ… Test with `caseSensitive: false` if having matching issues - โœ… Try different placement options (replace, before, after) - โœ… Use prepare-for-review to visually verify placement **Coordinate-based Solutions**: - โœ… Verify page dimensions match your PDF's actual size - โœ… Check that x,y coordinates are within page boundaries - โœ… Ensure coordinates account for any PDF margins or headers - โœ… Test with different page numbers if multi-page document - โœ… Validate that `x + width โ‰ค pageWidth` and `y + height โ‰ค pageHeight` #### Webhook Integration Issues **Symptoms**: Not receiving completion notifications **Solutions**: - โœ… Verify webhook URLs are accessible and return 200 OK - โœ… Check webhook configuration in organization settings - โœ… Review webhook delivery history for error details - โœ… Test webhook endpoints with external tools (webhook.site, ngrok) - โœ… Implement HMAC signature verification ### Debugging Tips 1. **Test with prepare-for-review first**: Visual confirmation before sending emails 2. **Use preview URLs**: Verify field placement and document appearance 3. **Check response documentId**: Save this for tracking and debugging 4. **Enable request logging**: Log all requests and responses with timestamps 5. **Test with minimal payloads**: Start simple (1 recipient, 1 field), add complexity incrementally 6. **Validate JSON before sending**: Use JSON validators to check format 7. **Use Postman/Insomnia**: Test manually before writing code 8. **Check API status page**: Verify TurboDocx services are operational 9. **Review error messages carefully**: Error responses include specific details 10. **Monitor rate limits**: Track API usage to avoid throttling ### Example Debug Request ```bash # Test with curl to isolate issues curl -X POST https://api.turbodocx.com/turbosign/single/prepare-for-review \ -H "Authorization: Bearer YOUR_TOKEN" \ -H "x-rapiddocx-org-id: YOUR_ORG_ID" \ -F "file=@document.pdf" \ -F "documentName=Test Document" \ -F 'recipients=[{"name":"Test User","email":"test@example.com","signingOrder":1}]' \ -F 'fields=[{"recipientEmail":"test@example.com","type":"signature","page":1,"x":100,"y":200,"width":200,"height":80,"pageWidth":612,"pageHeight":792}]' \ -v ``` ## Next Steps ### Webhooks - The Next Logical Step Now that you've integrated the single-step signing flow, the next step is setting up webhooks to receive real-time notifications when documents are signed. This eliminates the need for polling and provides instant updates about document status changes. ๐Ÿ“– **[Learn how to configure Webhooks โ†’](/docs/TurboSign/Webhooks)** ### Related Documentation - [TurboSign Setup Guide](/docs/TurboSign/Setting-up-TurboSign) - [Webhook Configuration](/docs/TurboSign/Webhooks) - [API Authentication](/docs/API/turbodocx-api-documentation) - [Integration Examples](/docs/Integrations) ## Support Need help with your integration? - **Discord Community**: [Join our Discord server](https://discord.gg/NYKwz4BcpX) for real-time support and discussions - **Documentation**: [https://docs.turbodocx.com](https://docs.turbodocx.com) --- Ready to get started? Follow the guide above to integrate TurboSign single-step API into your application and start collecting electronic signatures programmatically with a single API call! --- # Managing Your Signatures Once you've sent your document for signature, your work isn't done! This guide covers everything you need to know about managing your signature requests, tracking progress, and handling any issues that come up. ## What You'll Learn - ๐Ÿ“Š **Track signature progress** and see who's signed - ๐Ÿ“ง **Resend signature emails** when needed - โŒ **Void documents** that need to be cancelled - ๐Ÿ” **View audit trails** for complete signature history - ๐Ÿ“„ **Download completed documents** when all signatures are collected ## Quick Reference: Common Actions **Access all document actions through the context menu (three-dot menu โ‹ฎ):** | Action | Purpose | |--------|---------| | **Void Document** | Cancel signature request | | **Resend Email** | Send reminder to recipients | | **Download PDF** | Get fully signed document | | **Audit Trail** | View complete activity history | --- ## Tracking Signature Progress & Viewing Audit Trails ### Automatic Email Delivery **Good news!** TurboSign automatically sends a copy of the completed document and the user-facing audit trail to all participants via email when the signature process is complete. This means: - **All signers** get their own copy of the completed document - **Email delivery** happens instantly when the last signature is completed - **Audit trail** is included for compliance and record-keeping So while you can always redownload documents from your dashboard, you likely already have the completed document in your email inbox! --- ## How to Resend Signature Emails Need to send a gentle reminder to recipients who haven't signed yet? TurboSign makes it easy to resend signature requests to the next person in your signing order. ### Step-by-Step: Resending Signature Emails **Step 1: Access the Document Actions** 1. Navigate to your **TurboSign Dashboard** 2. Find the document with pending signatures 3. Click the **three-dot menu (โ‹ฎ)** next to the document ![Document context menu showing resend email option](/img/turbosign/ResendEmail.png) **Step 2: Send the Reminder** 4. Click **"Resend Email"** from the context menu 5. The resend modal will open showing available recipients ![Resend email modal showing recipient selection](/img/turbosign/ResendEmailHighlighted.png) 6. Click **"Send Email"** to dispatch the email 7. The dialog will close and the recipient will receive a reminder email with their signing link --- ## How to Void a Document Need to cancel a signature request that's already been sent? TurboSign makes it easy to void documents and notify all recipients. ### Step-by-Step: Voiding a Document **Step 1: Access the Document Actions** 1. Navigate to your **TurboSign Dashboard** 2. Locate the document you want to void 3. Click the **three-dot menu (โ‹ฎ)** next to the document ![Document context menu showing void option](/img/turbosign/VoidDocument.png) **Step 2: Enter Void Reason** 4. Enter a void reason that explains why you are voiding the document. ![Void dialog with reason field](/img/turbosign/VoidDialogReasonsForVoiding.png) **Step 3: Confirm Void** 5. Click the **"Void Document"** button in the bottom right corner to confirm ![Clicking void document confirmation button](/img/turbosign/ClickVoidDocument.png) 6. All recipients receive automatic notifications and the document status changes to "Voided" --- ## How to Redownload Completed Documents Need to download your fully signed document again? TurboSign makes it easy to redownload the completed PDF with all signatures whenever you need it. ### Step-by-Step: Redownloading Your Signed Document **Step 1: Access the Document Actions** 1. Navigate to your **TurboSign Dashboard** 2. Look for documents with **green "Completed" status** 3. Click the **three-dot menu (โ‹ฎ)** next to your completed document ![Document context menu showing download PDF option](/img/turbosign/DownloadPDF.png) **Step 2: Download the PDF** 4. Click **"Download PDF"** from the context menu 5. Your browser will automatically start downloading the file with all signatures --- ## How to View Audit Trails Need to see the complete history of your document? TurboSign maintains a detailed audit trail of every action taken. ### Step-by-Step: Accessing Audit Trails **Step 1: Access the Document Actions** 1. Open your **TurboSign Dashboard** 2. Find any document (completed or in-progress) 3. Click the **three-dot menu (โ‹ฎ)** next to the document ![Document context menu showing audit trail option](/img/turbosign/AuditTrail.png) **Step 2: View the Timeline** 4. Click **"Audit Trail"** from the context menu 5. The audit trail modal opens showing a chronological timeline ![Audit trail overview showing complete timeline](/img/turbosign/AuditTrailOverview.png) 6. Review all events with timestamps, participants, and security details. **Understanding Event Types:** The audit trail displays two main categories of events: **User Events** - Actions taken by document participants: - **Document Viewed** - When recipients open and view the document - **Document Signed** - When recipients complete their signature These are the two most important user events to monitor for tracking signature progress: ![Document viewed event details](/img/turbosign/AuditTrailDocumentViewed.png) ![Document signed event details](/img/turbosign/AuditTrailDocumentSigned.png) **System Events** - Automated actions by TurboSign: - **Email Notification Sent** - When the system sends emails to recipients - **Document Digitally Signed by TurboSign** - When TurboSign applies digital signatures - **Document Updated** - When the document is modified or updated via signature - **Document Sent** - When the document is initially distributed for signature ### How to Redownload the Audit Trail We already send a pretty user-facing Audit Trail with User events, but if you want to download a detailed copy, click **Download Audit Trail as JSON**, --- --- *Need help with signature management? Each action includes detailed step-by-step guides, screenshots, and best practices for professional document handling.* --- # How to Get a Document Signed with TurboSign Ready to send your first document for e-signature? You're in the right place! This step-by-step guide will walk you through the entire process of preparing and sending your document using TurboSign. ## What You'll Accomplish By the end of this guide, you'll know how to: - ๐Ÿ“„ **Upload or select documents** for signature - ๐Ÿ‘ฅ **Add recipients** and manage signing order - โœ๏ธ **Place signature fields** exactly where you need them - ๐Ÿ“ค **Send documents** for signature with confidence - ๐Ÿ”„ **Track the signing process** from start to finish :::tip Quick Start Promise This entire process takes less than 5 minutes once you get the hang of it. We'll have you sending professional signature requests in no time! ๐Ÿš€ ::: ## Before You Begin To use TurboSign effectively, you'll need: - Access to TurboDocx - A document ready for signing (PDF, Word, or existing TurboDocx deliverable) - Email addresses for all recipients who need to sign - About 60 seconds of your time โฐ :::tip Pro Tip Have your document ready and know exactly where signatures are needed before you start. This makes the whole process much smoother! ::: ## Step 1: Click "Get It Signed" Let's start by getting to TurboSign from your main dashboard. From the **TurboDocx homepage**, look for the **"Get It Signed"** button and click it. This will take you directly to **TurboSign** where all the magic happens. ![Get It Signed button on TurboDocx homepage](/img/turbosign/GetSigned.png) ## Step 2: Start a New Signature Request Now that you're in TurboSign, it's time to create your first signature request. In the **top right corner** of the TurboSign interface, you'll see a **"New Signature"** button. Click it to begin preparing your document for signatures. ![New Signature button on TurboSign dashboard](/img/turbosign/ClickNewSignature.png) ## Step 3: Upload or Select a Document Time to choose your document! TurboSign gives you two convenient options: ### Option A: Upload a New Document **Upload a new document** from your computer by clicking the upload area or dragging and dropping your file. **Supported formats:** - PDF files (.pdf) - Word documents (.docx) - Other common document formats ### Option B: Select an Existing Deliverable **Select an existing deliverable** you've already created within TurboDocx. This is perfect if you've already generated a document and want to get it signed. ![Document upload and selection interface](/img/turbosign/SelectOrUploadDocument.png) :::tip Document Tips - **PDF files work best** for consistent formatting across all devices - **Keep file sizes reasonable** (under 10MB) for faster loading - **Make sure your document is final** before uploading - you can't edit content after this step ::: ## Step 4: Add Document Details Now let's add some important information about your document. Fill in the required information: ### Document Name (Required) Give your document a clear, descriptive name. This will help you and your recipients identify the document easily. **Good examples:** - "Q3 Marketing Agreement - ABC Corp" - "Employment Contract - John Smith" - "Service Agreement - Project Alpha" ### Description (Optional) Add a brief description to provide context for your recipients. This appears in the signature request email. **Good examples:** - "Please review and sign this quarterly marketing agreement" - "New employee contract for review and signature" - "Service agreement for the upcoming project" ![Document details form with name and description fields](/img/turbosign/DocumentNameAndDescription.png) ## Step 5: Add Recipients Time to add the people who need to sign your document. This is where you control who signs and in what order. ### Adding Recipients **Click "Add Recipient"** to assign others to sign the document. You can add multiple recipients as needed. For each recipient, you'll need: - **Full name** (as it should appear on the signature) - **Email address** (where they'll receive the signature request) ### Including Yourself **Click "Include Me"** if you also need to sign the document. This adds you to the recipient list automatically. ### Setting Signing Order **Drag to change the signing order** if it matters for your document. The signing order determines who gets the document first. **When order matters:** - Legal documents that require witness signatures - Contracts where one party must sign before the other - Documents with approval workflows **When order doesn't matter:** - Simple agreements between equal parties - Documents where all parties can sign simultaneously ![Add recipients interface showing all options](/img/turbosign/AddRecipients.png) **CC Emails (Optional):** You can also add CC email addresses for people who should receive a copy of the document. These individuals will get the final signed copy when everyone has completed signing, but they won't need to sign the document themselves. :::tip Recipient Best Practices - **Use professional email addresses** for business documents - **Double-check email addresses** - typos mean delayed signatures - **Add yourself first** if you need to sign before others - **Keep signing order simple** unless legally required ::: ## Step 6: Continue to Field Placement Almost there! Now we'll move to the most important part - telling TurboSign exactly where signatures and other information should go. **Click "Continue"** in the bottom right corner to move to the field placement interface. This is where you'll drag and drop signature fields onto your document. ![Continue button at bottom right of recipient setup](/img/turbosign/AddRecipients.png) ## Step 7: Place Signature Fields Here's where the magic happens! You'll drag and drop the necessary fields onto your document exactly where you want them. ### Available Field Types The field editor provides several types of fields you can add: **Essential Fields:** - **Signature** - The actual signature field - **Name** - Typed name field - **Date** - Date when signed - **Initials** - For initialing pages or sections **Additional Fields:** - **Text** - For additional information - **Checkbox** - For confirmations or agreements - **Dropdown** - For selecting from options ![Field editor with available field types on the left](/img/turbosign/FieldEditorDragAndDrop.png) ### How to Place Fields 1. **Drag the field type** from the left panel 2. **Drop it onto the document** where you want it to appear 3. **Resize if needed** by dragging the corner handles 4. **Assign to the correct recipient** using the dropdown ### Assigning Fields to Recipients **Each field must be assigned to a recipient.** Make sure you: - Assign signature fields to the correct person - Place fields in logical locations on the document - Ensure all required fields are present ![Document with signature fields placed and recipient assignments](/img/turbosign/DraggingAndDroppingFields.png) :::tip Field Placement Tips - **Place signature fields near signature lines** if your document has them - **Add date fields near signatures** for legal completeness - **Use initials fields** for multi-page documents - **Test field sizes** - they should be large enough for signatures but not overwhelming - **Group related fields** together for better user experience ::: ## Step 7.5: Setting Default Values (Optional) Want to save your recipients time by pre-filling some information? TurboSign lets you set default values that will automatically appear in fields when recipients open the document. This is especially useful for common information you already know about your signers. ### What Are Default Values? **Default values** are pre-filled text that appears in fields automatically. Recipients can see this information already filled in and: - **Keep it as-is** if it's correct - **Edit it** if they need to make changes - **Save time** by not typing common information from scratch :::tip When to Use Default Values Perfect for information you already know: - Shipping addresses for order forms - Client contact details from your records - Company information for regular business partners - Any information recipients can review and correct if needed ::: ### How to Set Default Values You can set default values for each recipient to pre-fill common information. :::note Field Types Without Defaults **Signature**, **Initials**, and **Date** fields cannot have default values because they must be completed by the recipient at signing time. ::: ### Setting Default Values Per Recipient Default values are set per recipient and will pre-fill their fields. **Step 1: Find the Default Values Accordion** Scroll down in the right sidebar until you see the **"Default values for [recipient name] (Optional)"** accordion. Click to expand it. **Step 2: Enter Default Values** Fill in any of the available fields: - **Full name** - Complete name (e.g., "John Smith") - **First Name** - Given name only (e.g., "John") - **Last Name** - Family name only (e.g., "Smith") - **Email Address** - Contact email (e.g., "john.smith@company.com") - **Title** - Job title (e.g., "Senior Manager") - **Company** - Organization name (e.g., "Acme Corporation") **Step 3: Switch Between Recipients** Use the recipient tabs at the top to set different default values for each signer. :::tip Character Limits Each field has a maximum character limit. TurboSign will show you a character counter when you're approaching the limit so you don't lose any information. ::: ### Practical Examples **Example: Service Order** You're sending a service agreement to a client named Sarah Johnson. You already have her information from a previous order: **Default values for Sarah:** - Full name: "Sarah Johnson" - Email Address: "sarah.johnson@example.com" - Company: "Acme Corporation" - Text field for "Service Address": "123 Main Street, Suite 400, San Francisco, CA 94105" Now when Sarah receives the document, these fields will be pre-filled with this information. She can review and correct anything if needed before signing. ### Best Practices for Default Values **Do:** - โœ… **Use accurate information** - Double-check spelling and formatting - โœ… **Keep it concise** - Stay within character limits - โœ… **Save time on repeat signers** - Great for clients with existing records - โœ… **Pre-fill known facts** - Addresses, contact details, company names **Don't:** - โŒ **Don't force information** - Recipients can edit defaults if needed - โŒ **Don't use for signatures/initials** - These fields must be completed during signing - โŒ **Don't include sensitive data** - Avoid passwords, SSNs, or confidential information - โŒ **Don't overfill** - Only set defaults for information you truly know :::tip Time-Saving Tip If you send the same type of document to the same people regularly, setting default values can cut signing time in half! Recipients can review and submit much faster when common fields are already filled. ::: ## Step 8: Send the Document The final step! Once all fields are placed and everything looks perfect, it's time to send your document for signatures. **Click "Send Document"** in the **top right corner** to initiate the signing process. ![Send Document button in top right corner](/img/turbosign/ClickSendDocument.png) ### What Happens Next After clicking "Send Document": 1. **Email notifications** are sent to all recipients 2. **Recipients receive** a secure link to sign the document 3. **You get notifications** as each person signs 4. **Everyone receives** a copy of the fully signed document ## Congratulations! ๐ŸŽ‰ **That's it!** Your document is now on its way to being signed. You've successfully: - โœ… **Uploaded or selected** your document - โœ… **Added recipients** and set signing order - โœ… **Placed signature fields** exactly where needed - โœ… **Sent the document** for signatures ### What to Expect **Timeline:** - Recipients usually receive emails within minutes - Most people sign within 24-48 hours - You'll get notifications for each signature **Tracking:** - Monitor progress in your TurboSign dashboard - Send gentle reminders if needed - Download the completed document when all signatures are collected ## Tips for Success ### For Faster Signatures - **Use clear document names** so recipients know what they're signing - **Add helpful descriptions** to provide context - **Send during business hours** for faster response - **Follow up politely** if signatures are delayed ### For Professional Results - **Test your document** by sending it to yourself first - **Use consistent field sizes** for a clean look - **Place fields logically** following document flow - **Keep signing order simple** unless legally required ### For Peace of Mind - **Double-check email addresses** before sending - **Review field placement** carefully - **Save templates** for documents you use frequently - **Keep records** of all signed documents ## Troubleshooting Common Issues ### "The Send Button is Disabled" **Solution:** Make sure you've placed at least one signature field for each recipient. The Send button appears only when your document is ready. ### "Recipient Says They Can't Haven't Received the Email" **Solution:** Check that you used the correct email address and that the signing link hasn't expired. You can resend the invitation from your dashboard. ### "I Made a Mistake in the Document" **Solution:** It's best practice to void the document and send a new version. ## What's Next? Now that you know how to send documents for signature, you might want to explore: - **Creating signature templates** for frequently used documents - **Setting up automated workflows** for recurring signature processes - **Integrating TurboSign** with your existing document workflows - **Managing completed documents** and signatures :::tip Final Thoughts You've just mastered the art of digital signatures! Every document you send with TurboSign saves time, reduces errors, and provides a professional experience for all parties involved. Welcome to the future of document signing! ๐Ÿš€ ::: --- *Ready to sign your next document? Go forth and get those signatures! ๐Ÿ“* --- ## TurboSign Webhooks # Webhooks Webhooks enable your application to receive real-time notifications when important events occur in TurboSign. Instead of polling for changes, webhooks push event data to your specified endpoints immediately when signature documents are completed or voided. ![Get It Signed button on TurboDocx homepage](/img/webhooks/webhook-schema.png) ## Overview TurboSign webhooks provide a robust and secure way to integrate document signature events into your existing workflows. When configured, webhooks will automatically send HTTP POST requests to your specified URLs whenever subscribed events occur. ### Key Features - **Real-time Notifications**: Receive instant updates when documents are signed or voided - **Multiple URLs**: Configure up to 5 webhook URLs per configuration - **Secure Authentication**: HMAC-SHA256 signature verification ensures webhook authenticity - **Reliable Delivery**: Automatic retry logic with up to 3 attempts per webhook - **Delivery History**: Track and replay webhook deliveries with detailed logs - **Event Filtering**: Subscribe only to the events you need ## Configuration ### Setting Up Webhooks Webhooks can be configured through the TurboSign interface in your organization settings. 1. **Go to the Turbodocx Home Page and click on settings** - click on the settings on the sidemenu ![Get It Signed button on TurboDocx homepage](/img/webhooks/home-page.png) 2. **Navigate to Organization Settings** - Select "Organization Settings" from the tabs ![Get It Signed button on TurboDocx homepage](/img/webhooks/organization-setting.png) 3. **Scroll Down to Signature Configuration** - click "Configure Webhooks" ![Get It Signed button on TurboDocx homepage](/img/webhooks/core-features-section.png) 4. **Add Webhook URLs** - Enter your webhook endpoint URL(s) - You can add up to 5 different URLs - Each URL will receive all subscribed events - URLs must use HTTPS for production environments ![Get It Signed button on TurboDocx homepage](/img/webhooks/signature-webhook-config.png) 5. **Select Events to Subscribe** - Choose which events should trigger webhooks: - **Signature Document Completed**: Triggered when all signers have completed signing - **Signature Document Voided**: Triggered when a document is voided/cancelled ![Get It Signed button on TurboDocx homepage](/img/webhooks/signature-webhook-config.png) 6. **Save Configuration** - Click "Save Configuration" to activate your webhooks - Your webhook secret key will be displayed (only shown once for new configurations) - **Important**: Copy and securely store your webhook secret - it won't be shown again ![Get It Signed button on TurboDocx homepage](/img/webhooks/dill-signature-webhook-config.png) ![Get It Signed button on TurboDocx homepage](/img/webhooks/copy-webhook-secret.png) ### Managing Webhook Configuration #### Viewing Delivery History The Delivery History tab shows all webhook delivery attempts with detailed information: - **Event Type**: The type of event that triggered the webhook - **HTTP Status**: Response status code from your endpoint - **Attempts**: Number of delivery attempts made - **Timestamps**: When the webhook was created and last updated - **Actions**: View details or replay failed deliveries ![Get It Signed button on TurboDocx homepage](/img/webhooks/delivery-history.png) #### Webhook Secret Management Your webhook secret is used to verify that webhooks are genuinely from TurboDocx: - **Initial Generation**: A secret is automatically generated when you create a webhook configuration - **Security**: The secret is only shown in full immediately after generation or regeneration - **Regeneration**: You can regenerate the secret at any time if compromised - **Display**: After initial viewing, only a masked version (first 3 + \*\*\* + last 3 characters) is shown ![Get It Signed button on TurboDocx homepage](/img/webhooks/regenerate-secret.png) ## Webhook Events ### Signature Document Completed Triggered when all required signers have successfully signed a document. **Event Name**: `signature.document.completed` **Payload Example**: ```json { "event": "signature.document.completed", "event_id": "evt_01daa4ba531c42938f861c5a9ce9a5f2", "created_at": "2025-08-26T11:44:30.305Z", "version": "1.0", "data": { "document_id": "2dea093d-c38f-4898-b440-43dd9a14cd9d", "title": "Document Name", "status": "completed", "status_enum": "SignatureDocumentStatus.COMPLETED", "completed_at": "2025-08-26T11:44:30.299Z", "document_hash": "f516c4b9de36a5c9a999ba87abbc93078fdd0c9f6b855590d883d8bfb143308f" } } ``` ### Signature Document Voided Triggered when a document is voided or cancelled. **Event Name**: `signature.document.voided` **Payload Example**: ```json { "event": "signature.document.voided", "event_id": "evt_c825f202658b41ea932871ba13cc52a5", "created_at": "2025-08-26T11:42:03.622Z", "version": "1.0", "data": { "document_id": "9eee553b-28b6-4b43-b52b-4ef9957cc503", "title": "Statement of Work Example Draft", "status": "voided", "status_enum": "SignatureDocumentStatus.VOIDED", "voided_at": "2025-08-26T11:42:03.582Z", "void_reason": "signature not required", "document_hash": "b19151b93aed4f8cbcf060030a338dd414c249914eb8d2591c72390a0fa1b754" } } ``` ### Payload Fields | Field | Type | Description | | -------------------- | ------ | -------------------------------------------------------- | | `event` | string | The type of event (e.g., `signature.document.completed`) | | `event_id` | string | Unique identifier for this event instance | | `created_at` | string | ISO 8601 timestamp when the event occurred | | `version` | string | Webhook payload version (currently "1.0") | | `data.document_id` | string | Unique identifier of the signature document | | `data.title` | string | Document title/name | | `data.status` | string | Human-readable status | | `data.status_enum` | string | Programmatic status enum value | | `data.document_hash` | string | Document content hash for integrity verification | | `data.completed_at` | string | When the document was completed (completed event only) | | `data.voided_at` | string | When the document was voided (voided event only) | | `data.void_reason` | string | Reason for voiding (voided event only) | ## Signature Verification Every webhook request includes an `x-turbodocx-signature` header that you should verify to ensure the webhook is genuinely from TurboDocx. ### How It Works 1. TurboDocx creates a signature using HMAC-SHA256 2. The signature is computed from: `timestamp + "." + request_body` 3. The signature is sent in the `x-turbodocx-signature` header 4. Your endpoint verifies this signature using your webhook secret ### Verification Headers Each webhook request includes these headers: | Header | Description | | ------------------------- | -------------------------------------------------------- | | `X-TurboDocx-Signature` | HMAC signature for verification (format: `sha256=`) | | `X-TurboDocx-Timestamp` | Unix timestamp when the webhook was sent | | `X-TurboDocx-Event` | The event type that triggered this webhook | | `X-TurboDocx-Delivery-Id` | Unique ID for this delivery attempt (for idempotency) | ### Try it Now ### Security Best Practices 1. **Always verify signatures**: Never process webhooks without verifying the signature 2. **Use HTTPS**: Always use HTTPS endpoints in production 3. **Store secrets securely**: Keep webhook secrets in environment variables or secure vaults 4. **Implement timestamp validation**: Reject webhooks with timestamps older than 5 minutes 5. **Use timing-safe comparison**: Prevent timing attacks when comparing signatures 6. **Handle retries idempotently**: Use the `X-TurboDocx-Delivery-Id` to prevent duplicate processing 7. **Respond quickly**: Return 200 OK immediately and process webhooks asynchronously 8. **Log failures**: Keep logs of signature verification failures for security monitoring ## Delivery & Retries ### Delivery Behavior - **Timeout**: Each delivery attempt has a 10-second timeout - **Success Criteria**: Only HTTP 2xx status codes are considered successful - **Retry Logic**: Failed deliveries are automatically retried up to 3 times - **Retry Schedule**: Exponential backoff between retry attempts - **Delivery Order**: Webhooks are delivered to all configured URLs in parallel ### Handling Failures When a webhook delivery fails: 1. **Automatic Retries**: The system will automatically retry failed deliveries 2. **Delivery History**: All attempts are logged in the delivery history 3. **Manual Replay**: You can manually replay failed deliveries from the UI 4. **Error Details**: Response status codes and error messages are captured ### Best Practices for Your Endpoint 1. **Return 200 OK quickly**: Process webhooks asynchronously to avoid timeouts 2. **Implement idempotency**: Handle duplicate deliveries gracefully 3. **Queue for processing**: Use a message queue for reliable processing 4. **Monitor your endpoint**: Set up alerting for webhook processing failures 5. **Handle all event types**: Be prepared for new event types in the future ## Testing Webhooks ### Using the Test Feature You can test your webhook configuration before going live: 1. **Configure your webhook** with your test endpoint URL 2. **Save the configuration** to activate it 3. **Create a test signature document** and complete the signing process 4. **Check the Delivery History** to verify successful delivery 5. **Verify your endpoint** received and processed the webhook correctly ### Development Tools For local development, consider using: - **ngrok**: Expose your local server to receive webhooks - **Webhook.site**: Test webhook payloads without writing code - **RequestBin**: Inspect webhook requests in real-time - **Postman**: Simulate webhook requests for testing ### Testing Checklist - [ ] Webhook endpoint returns 200 OK status - [ ] Signature verification is working correctly - [ ] Timestamp validation is implemented - [ ] All event types are handled - [ ] Error handling is in place - [ ] Retry logic is handled idempotently - [ ] Logs capture webhook processing details - [ ] Performance under load has been tested ## Troubleshooting ### Common Issues #### Webhook Not Receiving Events **Symptoms**: Events occur but webhooks aren't triggered **Solutions**: - Verify webhook configuration is saved and active - Check that you've subscribed to the correct events - Ensure your endpoint URL is correct and accessible - Review the Delivery History for error messages #### Signature Verification Failing **Symptoms**: 401 Unauthorized responses from your endpoint **Solutions**: - Ensure you're using the raw request body (not parsed JSON) - Verify the webhook secret matches exactly - Check that header names are lowercase in your code - Confirm timestamp validation isn't too strict #### Timeouts **Symptoms**: Webhook deliveries show timeout errors **Solutions**: - Return 200 OK immediately, process asynchronously - Optimize endpoint performance - Check network connectivity and firewall rules - Consider increasing server resources #### Duplicate Deliveries **Symptoms**: Same event processed multiple times **Solutions**: - Implement idempotency using `X-TurboDocx-Delivery-Id` - Store processed event IDs temporarily - Use database constraints to prevent duplicates ### Getting Help If you encounter issues not covered here: 1. **Check the Delivery History** for detailed error messages 2. **Review your endpoint logs** for processing errors 3. **Test with a simple endpoint** to isolate issues 4. **Contact Support** with your webhook configuration details and error messages ## API Reference ### Webhook Object ```json { "id": "webhook_abc123", "orgId": "org_xyz789", "name": "signature", "urls": [ "https://api.example.com/webhooks/turbosign", "https://backup.example.com/webhooks" ], "events": ["signature.document.completed", "signature.document.voided"], "secretExists": true, "maskedSecret": "whs***f6a", "isActive": true, "createdOn": "2024-01-15T09:00:00.000Z", "updatedOn": "2024-01-15T09:00:00.000Z" } ``` ### Delivery Object ```json { "id": "delivery_def456", "webhookId": "webhook_abc123", "eventType": "signature.document.completed", "url": "https://api.example.com/webhooks/turbosign", "httpStatus": 200, "attemptCount": 1, "maxAttempts": 3, "isDelivered": true, "deliveredAt": "2024-01-15T10:30:05.000Z", "createdOn": "2024-01-15T10:30:00.000Z", "updatedOn": "2024-01-15T10:30:05.000Z" } ``` --- ## Next Steps - [Learn about TurboSign](/docs/TurboSign/Setting-up-TurboSign) - [Explore API Documentation](/docs/API/turbodocx-api-documentation) - [View Integration Guides](/docs/Integrations) --- ## Welcome # Welcome to TurboDocx ![](/img/welcome_to_dev-docs/Welcome.png) ## Are You Ready to Unlock the Power of Document Automation? Use our Documentation located on the left side of this screen to learn how to get started!