Guide

How to add free live chat to Django

Learn exactly where to paste your chat script in a Django project and why putting it in your base template is the only way to keep it live.

JH
Jerry Holt
July 25, 2026 · 15 min read

The short version

  • Paste the script in your base.html template right before the closing body tag.
  • Live chat and email support are free forever with no seat limits or conversation caps.
  • Avoid placing the script in individual views to prevent the widget from disappearing.
  • AI features are off by default and only cost four cents per generated response when enabled.

To add free live chat to Django, paste the LastWorker script tag into your base template, usually templates/base.html, immediately before the closing body tag. This ensures the chat widget appears on every page that extends your base file. You can then reload your site to see the widget active and ready to handle customer conversations without any manual configuration.

Where do I paste the live chat script in Django?

Django uses a template inheritance system. Most projects have a main file that contains the HTML skeleton. This file is typically named base.html and lives in your templates folder. You need to find the very end of this file.

Look for the tag that looks like </body>. You want to paste your code right above that line. This placement is important because it allows the rest of your page content to load before the browser fetches the chat widget. It keeps your site feeling fast for the visitor while ensuring the support channel is always available.

The code you need to paste looks like this:

<script src="https://lastworker.com/widget.js" data-agent-id="YOUR_AGENT_ID" async></script>

Replace the placeholder ID with the one found in your dashboard. Once this is in place, every page on your site that uses the {% extends "base.html" %} tag will automatically show the chat bubble.

What are the exact steps to get the widget live?

I have helped set up support systems for various service businesses, from a regional dental practice with eleven front desks to small local shops. The technical side should be the easiest part of your day. Follow these three steps.

First, open the base template that every other page on your site extends. In a standard Django setup, this is found at templates/base.html. If you have a custom structure, look for the file that contains your header and footer.

Second, paste the script tag provided in your dashboard immediately before the </body> tag. Do not worry about adding extra blocks or complex logic. The script handles the rest.

Third, save the file and reload your website in your browser. You do not need to restart your Django server because you only modified a template file. The widget should appear in the bottom corner of your screen immediately.

Why should you avoid putting the script in individual views?

I have watched people try to save on loading times by only putting the chat widget on their contact page or their pricing page. In the shops I worked with, this always backfired. A customer might have a question while looking at a blog post or a gallery of your work. If the chat widget disappears because that specific page does not have the script, you lose the lead.

The "gotcha" with Django is the template inheritance. If you put the script in a file like contact.html, it will only work on that URL. If the user clicks away to your home page, the widget vanishes. This breaks the conversation. By putting it in base.html, you guarantee that the widget stays present as the user navigates.

Consistency is the most important part of customer service. I spent eighteen years running operations, and the fastest way to frustrate a customer is to make it hard for them to talk to you. If they have to hunt for a contact button, they will just leave and go to a competitor.

How does this compare to other free chat tools?

When I was managing a two-location restaurant group, I spent hours looking at different software. Most tools claim to be free, but they come with strings. I looked at twelve major competitors in this space, and the limitations are often hidden in the fine print.

Four of those twelve tools, including LiveChat, Front, Zendesk, and Intercom, do not offer a free tier at all. You have to pay just to get started. Other companies offer a free version but limit who can use it. Crisp only gives you two seats and caps you at 100 customer profiles. Freshdesk and Chatwoot also limit you to two agents. If you have a team of three people, those "free" plans are useless.

Some tools limit the number of conversations. Tidio only gives you 50 billable conversations a month. If you have a busy week, the widget simply stops working until the next month starts. Zoho Desk offers a free plan, but it is for email ticketing only: it does not include live chat.

LastWorker is different. Live chat and email support are free forever. There are no limits on how many conversations you have or how many teammates you add. You get the shared inbox, contacts, tickets, and a public help center without ever putting down a credit card.

What happens when you want to use AI with Django?

Most software companies today try to force AI onto you. They use words like "transformation" to justify raising their prices. I prefer a different approach. At LastWorker, AI is off by default. Everything starts as a manual channel where a human answers the messages.

If you decide you want the AI to handle responses, you turn it on when you are ready. You are not charged a monthly subscription for it. Instead, you pay for what you use. An AI reply on chat, email, or SMS costs exactly $0.04. This only happens when the system actually generates a response.

This model worked well for the dental practice I managed. During the day, our front desk handled the messages. At night, we could let the AI take over for a few cents a message. We didn't have to pay for a "Pro" plan just to get the feature. We only paid when it actually helped a customer.

Why does the pricing structure matter for a service business?

I have written phone scripts at 2am and watched good leads die in a voicemail box because we couldn't afford to staff the phones 24/7. Traditional answering services are expensive. Virtual receptionists often charge high monthly fees regardless of whether they answer one call or a hundred.

The way we handle phone calls follows the same logic as our chat. There is no subscription. You can get a phone number for $1 a month. If you want the AI to answer a phone call, it costs $0.10 per minute. This includes the carrier costs.

Inbound SMS is free. If you send an outbound text, it is $0.03 per segment. This transparent pricing allows a small business to scale without a massive overhead. If you have a slow month, your bill reflects that. You are not trapped in a contract that assumes you are always at peak volume.

I have seen businesses get burned by "per-seat" pricing. When you add a new employee, your software bill shouldn't automatically go up by twenty or thirty dollars. That is why we offer unlimited teammates for free. You only pay for the specific AI interactions or phone minutes you choose to use.

How do you manage the messages once the widget is live?

Once you have added the script to your Django template, all incoming messages flow into the shared inbox. This is where you and your team can respond. You also get a knowledge base and a public help center for free.

I used to spend hours answering the same four questions about parking and hours of operation. Building a help center allows your customers to find those answers themselves. With LastWorker, this feature is included in the free tier. You can write your articles, organize them, and host them without paying extra for a "documentation" add-on.

The goal is to keep your front desk from burning out. By using the free live chat on your site, you give people an alternative to calling. This clears up the phone lines for the high-value conversations that require a human touch. I have watched front desk staff transform when they aren't being interrupted every two minutes by a basic question that could have been answered in a chat widget.

If you are currently looking at your Django code, take the five minutes to paste that script tag. It is a small change that makes a massive difference in how you interact with your customers. You don't need a credit card, and you won't get a surprise bill. It is just a tool that works the way a business owner expects it to.--- title: "How to add free live chat to Django" description: "Learn exactly where to paste your chat script in a Django project and why putting it in your base template is the only way to keep it live." date: "2026-07-25" author: "Jerry Holt" takeaways:

  • "Paste the script in your base.html template right before the closing body tag."
  • "Live chat and email support are free forever with no seat limits or conversation caps."
  • "Avoid placing the script in individual views to prevent the widget from disappearing."
  • "AI features are off by default and only cost four cents per generated response when enabled." faq:
  • q: "Where does the chat script go in a Django project?" a: >- You should place the script tag in your base template file, which is usually located at templates/base.html. Paste it immediately before the closing </body> tag so it loads on every page.
  • q: "Is the Django chat widget truly free?" a: >- Yes. Live chat and email support are free forever. This includes unlimited conversations and unlimited teammates without needing a credit card.
  • q: "What is the most common mistake when adding chat to Django?" a: >- The most common error is placing the script in a specific view or a secondary template. If the page does not extend that specific file, the chat widget will not load for the customer. related:
  • email-ticketing-system-free
  • free-live-chat-software
  • how-to-set-up-a-help-center
  • free-knowledge-base-software

To add free live chat to Django, paste the LastWorker script tag into your base template, usually templates/base.html, immediately before the closing body tag. This ensures the chat widget appears on every page that extends your base file. You can then reload your site to see the widget active and ready to handle customer conversations without any manual configuration.

Where do I paste the live chat script in Django?

Django uses a template inheritance system. Most projects have a main file that contains the HTML skeleton. This file is typically named base.html and lives in your templates folder. You need to find the very end of this file.

Look for the tag that looks like </body>. You want to paste your code right above that line. This placement is important because it allows the rest of your page content to load before the browser fetches the chat widget. It keeps your site feeling fast for the visitor while ensuring the support channel is always available.

The code you need to paste looks like this:

<script src="https://lastworker.com/widget.js" data-agent-id="YOUR_AGENT_ID" async></script>

Replace the placeholder ID with the one found in your dashboard. Once this is in place, every page on your site that uses the {% extends "base.html" %} tag will automatically show the chat bubble.

What are the exact steps to get the widget live?

I have helped set up support systems for various service businesses, from a regional dental practice with eleven front desks to small local shops. The technical side should be the easiest part of your day. Follow these three steps.

First, open the base template that every other page on your site extends. In a standard Django setup, this is found at templates/base.html. If you have a custom structure, look for the file that contains your header and footer.

Second, paste the script tag provided in your dashboard immediately before the </body> tag. Do not worry about adding extra blocks or complex logic. The script handles the rest.

Third, save the file and reload your website in your browser. You do not need to restart your Django server because you only modified a template file. The widget should appear in the bottom corner of your screen immediately.

Why should you avoid putting the script in individual views?

I have watched people try to save on loading times by only putting the chat widget on their contact page or their pricing page. In the shops I worked with, this always backfired. A customer might have a question while looking at a blog post or a gallery of your work. If the chat widget disappears because that specific page does not have the script, you lose the lead.

The "gotcha" with Django is the template inheritance. If you put the script in a file like contact.html, it will only work on that URL. If the user clicks away to your home page, the widget vanishes. This breaks the conversation. By putting it in base.html, you guarantee that the widget stays present as the user navigates.

Consistency is the most important part of customer service. I spent eighteen years running operations, and the fastest way to frustrate a customer is to make it hard for them to talk to you. If they have to hunt for a contact button, they will just leave and go to a competitor.

How does this compare to other free chat tools?

When I was managing a two-location restaurant group, I spent hours looking at different software. Most tools claim to be free, but they come with strings. I looked at twelve major competitors in this space, and the limitations are often hidden in the fine print.

Four of those twelve tools, including LiveChat, Front, Zendesk, and Intercom, do not offer a free tier at all. You have to pay just to get started. Other companies offer a free version but limit who can use it. Crisp only gives you two seats and caps you at 100 customer profiles. Freshdesk and Chatwoot also limit you to two agents. If you have a team of three people, those "free" plans are useless.

Some tools limit the number of conversations. Tidio only gives you 50 billable conversations a month. If you have a busy week, the widget simply stops working until the next month starts. Zoho Desk offers a free plan, but it is for email ticketing only: it does not include live chat.

LastWorker is different. Live chat and email support are free forever. There are no limits on how many conversations you have or how many teammates you add. You get the shared inbox, contacts, tickets, and a public help center without ever putting down a credit card.

What happens when you want to use AI with Django?

Most software companies today try to force AI onto you. They use words like "transformation" to justify raising their prices. I prefer a different approach. At LastWorker, AI is off by default. Everything starts as a manual channel where a human answers the messages.

If you decide you want the AI to handle responses, you turn it on when you are ready. You are not charged a monthly subscription for it. Instead, you pay for what you use. An AI reply on chat, email, or SMS costs exactly $0.04. This only happens when the system actually generates a response.

This model worked well for the dental practice I managed. During the day, our front desk handled the messages. At night, we could let the AI take over for a few cents a message. We didn't have to pay for a "Pro" plan just to get the feature. We only paid when it actually helped a customer.

Why does the pricing structure matter for a service business?

I have written phone scripts at 2am and watched good leads die in a voicemail box because we couldn't afford to staff the phones 24/7. Traditional answering services are expensive. Virtual receptionists often charge high monthly fees regardless of whether they answer one call or a hundred.

The way we handle phone calls follows the same logic as our chat. There is no subscription. You can get a phone number for $1 a month. If you want the AI to answer a phone call, it costs $0.10 per minute. This includes the carrier costs.

Inbound SMS is free. If you send an outbound text, it is $0.03 per segment. This transparent pricing allows a small business to scale without a massive overhead. If you have a slow month, your bill reflects that. You are not trapped in a contract that assumes you are always at peak volume.

I have seen businesses get burned by "per-seat" pricing. When you add a new employee, your software bill shouldn't automatically go up by twenty or thirty dollars. That is why we offer unlimited teammates for free. You only pay for the specific AI interactions or phone minutes you choose to use.

How do you manage the messages once the widget is live?

Once you have added the script to your Django template, all incoming messages flow into the shared inbox. This is where you and your team can respond. You also get a knowledge base and a public help center for free.

I used to spend hours answering the same four questions about parking and hours of operation. Building a help center allows your customers to find those answers themselves. With LastWorker, this feature is included in the free tier. You can write your articles, organize them, and host them without paying extra for a "documentation" add-on.

The goal is to keep your front desk from burning out. By using the free live chat on your site, you give people an alternative to calling. This clears up the phone lines for the high-value conversations that require a human touch. I have watched front desk staff transform when they aren't being interrupted every two minutes by a basic question that could have been answered in a chat widget.

If you are currently looking at your Django code, take the five minutes to paste that script tag. It is a small change that makes a massive difference in how you interact with your customers. You don't need a credit card, and you won't get a surprise bill. It is just a tool that works the way a business owner expects it to.

Frequently asked questions

Where does the chat script go in a Django project?

You should place the script tag in your base template file, which is usually located at templates/base.html. Paste it immediately before the closing </body> tag so it loads on every page.

Is the Django chat widget truly free?

Yes. Live chat and email support are free forever. This includes unlimited conversations and unlimited teammates without needing a credit card.

What is the most common mistake when adding chat to Django?

The most common error is placing the script in a specific view or a secondary template. If the page does not extend that specific file, the chat widget will not load for the customer.

JH
Jerry Holt
Customer Operations Lead, LastWorker

Jerry Holt has spent eighteen years running customer operations for service businesses, from a two-location restaurant group to a regional dental practice with eleven front desks. He has hired receptionists, written phone scripts at 2 a.m., and watched good leads die in a voicemail box. These days he writes about what actually moves the needle on the phones, in the inbox, and over chat, and where AI earns its place versus where it gets in the way.

Stop letting customers go to voicemail.

Set up in about fifteen minutes. Live chat and email are free forever, so there is no bill to weigh up before you try it.