# Creating a custom video page for clients

![](https://outline-production-attachments.s3-accelerate.amazonaws.com/uploads/9afff6dc-dd0a-4917-a2d7-67957425d8e9/108262dc-fc04-4037-80a3-16d82700fa9d/1cTJFDyj%402x.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=AKIA4EOUDTOVUICLPZ4P%2F20260912%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260912T180000Z&X-Amz-Expires=86400&X-Amz-Signature=dc19da01fc355dec414fdb850995ead4e3e0187be66bb574f28e7af3384cbc1c&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject)Want to share custom videos with your clients, but they’re all personalized? No problem, with CRM fields it’s possible to show each client exactly what they need to see.


To get the result seen above, you need to:


* set up CRM fields,
* create a “videos” page
* and use [if conditions](https://twig.symfony.com/doc/3.x/tags/if.html) to show the videos.

## Setting up the CRM fields

Go to `Settings → CRM fields` and set up 3 single single line of text fields:


 ![](https://outline-production-attachments.s3-accelerate.amazonaws.com/uploads/9afff6dc-dd0a-4917-a2d7-67957425d8e9/405d66c6-fcc7-4b69-936b-4d992641cb62/cPFCUTxM%402x.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=AKIA4EOUDTOVUICLPZ4P%2F20260912%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260912T180000Z&X-Amz-Expires=86400&X-Amz-Signature=222c6d7399ce89420cb23ed84f77c77de2726f3982d0ad2eac9d108e5f508c15&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject)


:::warning
Make sure these fields are not visible in the user profile.

:::


Write down the field IDs as we’ll need them in the next step.

## Create a custom videos page

Go to `Settings → Templates` and click on `+ Add Page`. Name it `videos`**.**


Copy the following code into it:


```javascript
{% extends ajax ? "layout_ajax" : "clients.layout" %}

{% block content %}

	<h1>Videos for you, {{ user.name_f|title}}</h1>

    {% if user.custom_fields.42 or user.custom_fields.43 or user.custom_fields.44 %}
	<div class="container">
  		<div class="row row-cols-3">
            <div class="col">
                <div class="embed-responsive embed-responsive-16by9">
                    <iframe class="embed-responsive-item" src="{{ user.custom_fields.42 }}" allowfullscreen></iframe>
                </div>
            </div>
            <div class="col">
                <div class="embed-responsive embed-responsive-16by9">
                    <iframe class="embed-responsive-item" src="{{ user.custom_fields.43 }}" allowfullscreen></iframe>
                </div>
            </div>
            <div class="col">
                <div class="embed-responsive embed-responsive-16by9">
                    <iframe class="embed-responsive-item" src="{{ user.custom_fields.44 }}" allowfullscreen></iframe>
                </div>
            </div>
  		</div>
	</div>   
    {% endif %}
{% endblock %}
```


Next, change the user.custom_fields. IDs to those in your CRM fields.

## Testing the videos page

Create a test client account, edit it, and enter 3 video URLs in the CRM fields. Make sure that you use embed URLs.


 ![](https://outline-production-attachments.s3-accelerate.amazonaws.com/uploads/9afff6dc-dd0a-4917-a2d7-67957425d8e9/4b4c311b-3c4b-472e-97b2-2e5021faa811/2x3onE1a%402x.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=AKIA4EOUDTOVUICLPZ4P%2F20260912%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260912T180000Z&X-Amz-Expires=86400&X-Amz-Signature=1e87f9ea2aca227e1285780405181e613a14644d7e3d473874a171dd3e4fc41f&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject)Log in as the client, and visit the custom page https://yourname.spp.io/portal/page/videos to see the videos embedded.



:::tip
Feel free to set up additional CRM fields if you need more than 3 videos. Make sure to adjust the above template and add more rows to it. [Visit the Bootstrap documentation](https://getbootstrap.com/docs/4.6/layout/grid/#row-columns) for more information about their grid system.

:::

## Adding a videos menu bar item

Go to `Settings → Menus` and click on `+ Add link`.


Enter the following into the fields:


 ![](https://outline-production-attachments.s3-accelerate.amazonaws.com/uploads/9afff6dc-dd0a-4917-a2d7-67957425d8e9/aae1d2ed-7220-4894-8d45-0864ee7e20ae/YqSP4ArJ%402x.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=AKIA4EOUDTOVUICLPZ4P%2F20260912%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260912T180000Z&X-Amz-Expires=86400&X-Amz-Signature=4dc4c2e29a37bff1f089286f9758e0279c0ed457af9672c85b4ead6d485ecf72&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject)

Click the `Save menus` button at the bottom of the page.

## Setting up a filter for the sidebar

Go to `Settings → Templates` and open `clients/sidebar.twig`.


On line 18 you should see: `{% for item in items %}`


Replace it with:


```javascript
{% for item in items|filter(item => 
	item.link != '/portal/page/videos' or
	user.custom_fields.42 or user.custom_fields.43 or user.custom_fields.44 )
%}
```


Unless the video CRM fields are filled out, your client’s won’t see the Videos link in the sidebar.

---

**Documents**

- [Portal Redesign Upgrade Guide](https://wayfront.getoutline.com/s/5b543dee-b2f8-495e-941f-1becdf9b3942/doc/portal-redesign-upgrade-guide-DnCoYzblIt)
- [Exit Intent Popup](https://wayfront.getoutline.com/s/5b543dee-b2f8-495e-941f-1becdf9b3942/doc/exit-intent-popup-THivvycReO)
- [Custom iframes](https://wayfront.getoutline.com/s/5b543dee-b2f8-495e-941f-1becdf9b3942/doc/custom-iframes-Kj0JeNWVwQ)
- [Clickable Images on Option Groups](https://wayfront.getoutline.com/s/5b543dee-b2f8-495e-941f-1becdf9b3942/doc/clickable-images-on-option-groups-vDYxKs9PMl)
- [Custom Payment Method](https://wayfront.getoutline.com/s/5b543dee-b2f8-495e-941f-1becdf9b3942/doc/custom-payment-method-KiKBJqjgL3)
- [Authenticating With External Tools](https://wayfront.getoutline.com/s/5b543dee-b2f8-495e-941f-1becdf9b3942/doc/authenticating-with-external-tools-pQxczyjIY2)
- [Showing service description on invoices](https://wayfront.getoutline.com/s/5b543dee-b2f8-495e-941f-1becdf9b3942/doc/showing-service-description-on-invoices-VxaFRWVUTI)
- [Setting up user-specific signatures](https://wayfront.getoutline.com/s/5b543dee-b2f8-495e-941f-1becdf9b3942/doc/setting-up-user-specific-signatures-1OcMvlMlZu)
- [Pulling information from onboarding forms](https://wayfront.getoutline.com/s/5b543dee-b2f8-495e-941f-1becdf9b3942/doc/pulling-information-from-onboarding-forms-POnrbwT2Qw)
- [Adding a time limit for revision requests](https://wayfront.getoutline.com/s/5b543dee-b2f8-495e-941f-1becdf9b3942/doc/adding-a-time-limit-for-revision-requests-rAFguF4fCH)
- [Hiding Tax ID field](https://wayfront.getoutline.com/s/5b543dee-b2f8-495e-941f-1becdf9b3942/doc/hiding-tax-id-field-SU7mYvGrlO)
- [Displaying info messages in dashboard](https://wayfront.getoutline.com/s/5b543dee-b2f8-495e-941f-1becdf9b3942/doc/displaying-info-messages-in-dashboard-KTsBBWUEbG)
- [Hide card option based on total value](https://wayfront.getoutline.com/s/5b543dee-b2f8-495e-941f-1becdf9b3942/doc/hide-card-option-based-on-total-value-MiWhWmtg31)
- [Creating a custom country dropdown](https://wayfront.getoutline.com/s/5b543dee-b2f8-495e-941f-1becdf9b3942/doc/creating-a-custom-country-dropdown-GL26O85x0d)
- [How to hide "add rows" for spreadsheet input](https://wayfront.getoutline.com/s/5b543dee-b2f8-495e-941f-1becdf9b3942/doc/how-to-hide-add-rows-for-spreadsheet-input-U9RsOks4RW)
- [Setting up a minimum order value for order forms](https://wayfront.getoutline.com/s/5b543dee-b2f8-495e-941f-1becdf9b3942/doc/setting-up-a-minimum-order-value-for-order-forms-NGYiH3MmmX)
- [Using a custom field value in the sidebar](https://wayfront.getoutline.com/s/5b543dee-b2f8-495e-941f-1becdf9b3942/doc/using-a-custom-field-value-in-the-sidebar-UKhLuS1Tjs)
- [Adding a Visible Scrollbar to Side Menu](https://wayfront.getoutline.com/s/5b543dee-b2f8-495e-941f-1becdf9b3942/doc/adding-a-visible-scrollbar-to-side-menu-ZcV5aqIQwC)
- [Tasks Checklist](https://wayfront.getoutline.com/s/5b543dee-b2f8-495e-941f-1becdf9b3942/doc/tasks-checklist-XIytkKQ8nh)
- [Adding Secure Checkout Logos to Order Forms](https://wayfront.getoutline.com/s/5b543dee-b2f8-495e-941f-1becdf9b3942/doc/adding-secure-checkout-logos-to-order-forms-QkLRP18AX7)
- [Showing order title in invoices](https://wayfront.getoutline.com/s/5b543dee-b2f8-495e-941f-1becdf9b3942/doc/showing-order-title-in-invoices-YUYPpGdkGr)
- [Creating a custom video page for clients](https://wayfront.getoutline.com/s/5b543dee-b2f8-495e-941f-1becdf9b3942/doc/creating-a-custom-video-page-for-clients-ttLzyrVoEj)
- [Show prices inclusive of tax](https://wayfront.getoutline.com/s/5b543dee-b2f8-495e-941f-1becdf9b3942/doc/show-prices-inclusive-of-tax-ORRDFVqEaK)
- [Setting up an Upsell Form](https://wayfront.getoutline.com/s/5b543dee-b2f8-495e-941f-1becdf9b3942/doc/setting-up-an-upsell-form-pr5OqY4lC1)
- [Accepting only ACH via Stripe](https://wayfront.getoutline.com/s/5b543dee-b2f8-495e-941f-1becdf9b3942/doc/accepting-only-ach-via-stripe-51chofQi4U)
- [Adding a filter for services based on location](https://wayfront.getoutline.com/s/5b543dee-b2f8-495e-941f-1becdf9b3942/doc/adding-a-filter-for-services-based-on-location-7hfZdabwBe)
- [Integrating live chat scripts for logged in users](https://wayfront.getoutline.com/s/5b543dee-b2f8-495e-941f-1becdf9b3942/doc/integrating-live-chat-scripts-for-logged-in-users-cOvIknt3nH)
- [Enabling opt-in checkbox on signup page](https://wayfront.getoutline.com/s/5b543dee-b2f8-495e-941f-1becdf9b3942/doc/enabling-opt-in-checkbox-on-signup-page-MPN5sKo8LR)
- [Adding a phone number/company name field to the signup page](https://wayfront.getoutline.com/s/5b543dee-b2f8-495e-941f-1becdf9b3942/doc/adding-a-phone-numbercompany-name-field-to-the-signup-page-1xt4p4YbFR)
- [Adding a terms field to the signup page](https://wayfront.getoutline.com/s/5b543dee-b2f8-495e-941f-1becdf9b3942/doc/adding-a-terms-field-to-the-signup-page-ZBJVshyTre)
- [Setting up a spreadsheet-style service library](https://wayfront.getoutline.com/s/5b543dee-b2f8-495e-941f-1becdf9b3942/doc/setting-up-a-spreadsheet-style-service-library-Xo1YNduTXt)
- [Censor domain services](https://wayfront.getoutline.com/s/5b543dee-b2f8-495e-941f-1becdf9b3942/doc/censor-domain-services-bYD6hV2paC)
- [Removing the drop-down from quantity](https://wayfront.getoutline.com/s/5b543dee-b2f8-495e-941f-1becdf9b3942/doc/removing-the-drop-down-from-quantity-nQD9MWxI9g)
- [Limiting the quantity input in forms](https://wayfront.getoutline.com/s/5b543dee-b2f8-495e-941f-1becdf9b3942/doc/limiting-the-quantity-input-in-forms-WRiRBPFsXG)
- [Enabling multi-line sidebar menu items](https://wayfront.getoutline.com/s/5b543dee-b2f8-495e-941f-1becdf9b3942/doc/enabling-multi-line-sidebar-menu-items-8ifAYqDSeY)
- [Adding Services as a column in Orders](https://wayfront.getoutline.com/s/5b543dee-b2f8-495e-941f-1becdf9b3942/doc/adding-services-as-a-column-in-orders-0jTrJnoJpq)
- [Display the number of requests in client portal](https://wayfront.getoutline.com/s/5b543dee-b2f8-495e-941f-1becdf9b3942/doc/display-the-number-of-requests-in-client-portal-1AEAtMzdBl)
- [Embedding testimonials in order forms](https://wayfront.getoutline.com/s/5b543dee-b2f8-495e-941f-1becdf9b3942/doc/embedding-testimonials-in-order-forms-9BALVU394c)
- [Displaying the due date in client view](https://wayfront.getoutline.com/s/5b543dee-b2f8-495e-941f-1becdf9b3942/doc/displaying-the-due-date-in-client-view-OIORp60Xmt)
- [Preventing invoice footer from overlapping notes](https://wayfront.getoutline.com/s/5b543dee-b2f8-495e-941f-1becdf9b3942/doc/preventing-invoice-footer-from-overlapping-notes-YxUOl8nClC)
- [Hiding specific categories from clients based on CRM Field value](https://wayfront.getoutline.com/s/5b543dee-b2f8-495e-941f-1becdf9b3942/doc/hiding-specific-categories-from-clients-based-on-crm-field-value-MkOa3XbFsY)
- [Making “Purchasing for a company” the default option](https://wayfront.getoutline.com/s/5b543dee-b2f8-495e-941f-1becdf9b3942/doc/making-purchasing-for-a-company-the-default-option-H0lS90btpB)
- [Modifying the sidebar width](https://wayfront.getoutline.com/s/5b543dee-b2f8-495e-941f-1becdf9b3942/doc/modifying-the-sidebar-width-TaQzBptA51)
- [Adding a character limit to a field](https://wayfront.getoutline.com/s/5b543dee-b2f8-495e-941f-1becdf9b3942/doc/adding-a-character-limit-to-a-field-168KW829Hf)
- [Check if user has filled an onboarding form](https://wayfront.getoutline.com/s/5b543dee-b2f8-495e-941f-1becdf9b3942/doc/check-if-user-has-filled-an-onboarding-form-6vxIQYQ98l)
- [Checking if user is subscribed to a service](https://wayfront.getoutline.com/s/5b543dee-b2f8-495e-941f-1becdf9b3942/doc/checking-if-user-is-subscribed-to-a-service-VOlTqSxbFt)
- [Setting up further Klaviyo tracking](https://wayfront.getoutline.com/s/5b543dee-b2f8-495e-941f-1becdf9b3942/doc/setting-up-further-klaviyo-tracking-5hskn0ln5f)
- [Redirecting to  intake form immediately](https://wayfront.getoutline.com/s/5b543dee-b2f8-495e-941f-1becdf9b3942/doc/redirecting-to-intake-form-immediately-xvsv2UBjV1)
- [Redirecting to a custom page](https://wayfront.getoutline.com/s/5b543dee-b2f8-495e-941f-1becdf9b3942/doc/redirecting-to-a-custom-page-2Le1kIdwhT)
- [Using a hidden field to save an image selection](https://wayfront.getoutline.com/s/5b543dee-b2f8-495e-941f-1becdf9b3942/doc/using-a-hidden-field-to-save-an-image-selection-RICY8QHSP4)
- [Using the Hidden Field in Forms to Charge a Setup Fee to New Clients Only](https://wayfront.getoutline.com/s/5b543dee-b2f8-495e-941f-1becdf9b3942/doc/using-the-hidden-field-in-forms-to-charge-a-setup-fee-to-new-clients-only-93hpCLOT31)
- [Adjust add-on service quantity to match parent service](https://wayfront.getoutline.com/s/5b543dee-b2f8-495e-941f-1becdf9b3942/doc/adjust-add-on-service-quantity-to-match-parent-service-P6KAzjgyRD)
- [Running code on navigation](https://wayfront.getoutline.com/s/5b543dee-b2f8-495e-941f-1becdf9b3942/doc/running-code-on-navigation-96cu5xx5cH)
- [Displaying specific services to specific subscriptions only](https://wayfront.getoutline.com/s/5b543dee-b2f8-495e-941f-1becdf9b3942/doc/displaying-specific-services-to-specific-subscriptions-only-UX0Vy3x61L)
- [Google Ads Conversion Event Snippet](https://wayfront.getoutline.com/s/5b543dee-b2f8-495e-941f-1becdf9b3942/doc/google-ads-conversion-event-snippet-JCBlbnYqLy)
- [Changing the button link on the receipt page](https://wayfront.getoutline.com/s/5b543dee-b2f8-495e-941f-1becdf9b3942/doc/changing-the-button-link-on-the-receipt-page-MqSdRp2i80)
- [Adding TrustPilot’s JavaScript integration](https://wayfront.getoutline.com/s/5b543dee-b2f8-495e-941f-1becdf9b3942/doc/adding-trustpilots-javascript-integration-NLAfhqWADA)
- [Cancelling subscriptions on the spot](https://wayfront.getoutline.com/s/5b543dee-b2f8-495e-941f-1becdf9b3942/doc/cancelling-subscriptions-on-the-spot-2O31lWq7no)
- [Translating the sidebar](https://wayfront.getoutline.com/s/5b543dee-b2f8-495e-941f-1becdf9b3942/doc/translating-the-sidebar-cKAuoPZGiz)
- [Tagging contacts with hidden contact form field](https://wayfront.getoutline.com/s/5b543dee-b2f8-495e-941f-1becdf9b3942/doc/tagging-contacts-with-hidden-contact-form-field-P98h74FhfC)
- [Personalizing emails based on user's country](https://wayfront.getoutline.com/s/5b543dee-b2f8-495e-941f-1becdf9b3942/doc/personalizing-emails-based-on-users-country-PRCaFoXQa8)
- [Display address field for all checkouts](https://wayfront.getoutline.com/s/5b543dee-b2f8-495e-941f-1becdf9b3942/doc/display-address-field-for-all-checkouts-egCvrN3s7P)
- [[Zapier] Updating order due date with a date from form](https://wayfront.getoutline.com/s/5b543dee-b2f8-495e-941f-1becdf9b3942/doc/zapier-updating-order-due-date-with-a-date-from-form-6t7dxPrgTb)
- [Redirect clients after login/signup](https://wayfront.getoutline.com/s/5b543dee-b2f8-495e-941f-1becdf9b3942/doc/redirect-clients-after-loginsignup-ycee4fdtuJ)