Convert Figma logo to code with AI

papercups-io logopapercups

Open-source live customer chat

5,817
535
5,817
171

Top Related Projects

23,365

Open-source live-chat, email support, omni-channel desk. An alternative to Intercom, Zendesk, Salesforce Service Cloud etc. 🔥💬

3,312

A full featured Live Chat, Support & Marketing platform, alternative to Intercom, Drift, Crisp, etc from cience.com

3,633

Source available experience management infrastructure. Pioneering the future of experiences with XOS (Experience Operating System). Hubspot + Qualtrics alternative

26,126

🦔 PostHog provides open-source web & product analytics, session recording, feature flagging and A/B testing that you can self-host. Get started - free.

Quick Overview

Papercups is an open-source live customer chat application designed for businesses. It provides a customizable widget that can be embedded into websites, allowing companies to engage with their customers in real-time. Papercups offers features like team inbox, Slack integration, and analytics, making it a versatile solution for customer support and engagement.

Pros

  • Open-source and self-hostable, providing full control over data and customization
  • Integrates with popular platforms like Slack for seamless team communication
  • Offers a user-friendly interface for both customers and support agents
  • Includes analytics and reporting features to track customer interactions

Cons

  • May require technical expertise for setup and self-hosting
  • Limited third-party integrations compared to some commercial alternatives
  • Community support might be less robust than paid solutions
  • Ongoing maintenance and updates may be necessary for self-hosted instances

Code Examples

# Creating a new customer in Papercups
customer = %{
  name: "John Doe",
  email: "john@example.com",
  external_id: "123456"
}
{:ok, created_customer} = Papercups.Customers.create_customer(customer)
# Sending a message through the Papercups API
message = %{
  body: "Hello! How can I help you today?",
  conversation_id: conversation.id,
  account_id: account.id,
  user_id: user.id
}
{:ok, sent_message} = Papercups.Messages.create_message(message)
# Retrieving conversation history
{:ok, conversations} = Papercups.Conversations.list_conversations(%{
  account_id: account.id,
  status: "closed",
  limit: 10,
  offset: 0
})

Getting Started

To get started with Papercups, follow these steps:

  1. Clone the repository:

    git clone https://github.com/papercups-io/papercups.git
    cd papercups
    
  2. Set up the environment:

    mix deps.get
    npm install --prefix assets
    
  3. Create and migrate the database:

    mix ecto.setup
    
  4. Start the Phoenix server:

    mix phx.server
    
  5. Visit http://localhost:4000 in your browser to access the Papercups dashboard.

For more detailed instructions and configuration options, refer to the project's documentation on GitHub.

Competitor Comparisons

23,365

Open-source live-chat, email support, omni-channel desk. An alternative to Intercom, Zendesk, Salesforce Service Cloud etc. 🔥💬

Pros of Chatwoot

  • More comprehensive feature set, including multi-channel support (email, WhatsApp, etc.)
  • Larger and more active community, with frequent updates and contributions
  • Better documentation and easier setup process for beginners

Cons of Chatwoot

  • Higher resource requirements due to its more extensive feature set
  • Steeper learning curve for developers looking to customize or extend functionality
  • Less focus on developer-friendly integrations compared to Papercups

Code Comparison

Chatwoot (Ruby on Rails):

class ConversationsController < ApplicationController
  def index
    @conversations = Current.account.conversations.includes(
      :assignee, :contact, :taggings
    ).page(params[:page])
  end
end

Papercups (Elixir/Phoenix):

defmodule PapercupsWeb.ConversationController do
  use PapercupsWeb, :controller

  def index(conn, params) do
    conversations = Conversations.list_conversations(params)
    render(conn, "index.json", conversations: conversations)
  end
end

Both projects use modern web frameworks, but Chatwoot's Ruby on Rails codebase may be more familiar to a wider range of developers. Papercups' Elixir/Phoenix stack offers potential performance benefits for high-concurrency scenarios. Chatwoot's controller includes more eager loading, which could improve performance for complex queries, while Papercups' approach is more straightforward.

3,312

A full featured Live Chat, Support & Marketing platform, alternative to Intercom, Drift, Crisp, etc from cience.com

Pros of Chaskiq

  • More comprehensive feature set, including email campaigns and automation
  • Supports multiple languages out of the box
  • Offers a visual conversation builder for complex workflows

Cons of Chaskiq

  • Steeper learning curve due to more complex architecture
  • Requires more resources to run and maintain
  • Less focused on simplicity compared to Papercups

Code Comparison

Chaskiq (Ruby on Rails):

class ConversationsController < ApplicationController
  def create
    @conversation = Conversation.new(conversation_params)
    if @conversation.save
      render json: @conversation, status: :created
    else
      render json: @conversation.errors, status: :unprocessable_entity
    end
  end
end

Papercups (Elixir):

defmodule PapercupsWeb.ConversationController do
  use PapercupsWeb, :controller

  def create(conn, %{"conversation" => conversation_params}) do
    with {:ok, %Conversation{} = conversation} <- Conversations.create_conversation(conversation_params) do
      conn
      |> put_status(:created)
      |> render("show.json", conversation: conversation)
    end
  end
end

Both projects use a similar MVC structure, but Chaskiq uses Ruby on Rails while Papercups is built with Elixir and Phoenix. Chaskiq's codebase is more extensive due to its broader feature set, while Papercups maintains a simpler and more focused approach to customer messaging.

3,633

Source available experience management infrastructure. Pioneering the future of experiences with XOS (Experience Operating System). Hubspot + Qualtrics alternative

Pros of erxes

  • More comprehensive CRM features, including sales, marketing, and customer support tools
  • Larger community and more frequent updates
  • Supports multiple languages and has a more extensive plugin ecosystem

Cons of erxes

  • Steeper learning curve due to its broader feature set
  • Potentially higher resource requirements for hosting and maintenance
  • Less focused on live chat functionality compared to Papercups

Code Comparison

Papercups (Elixir):

defmodule Papercups.Conversation do
  use Ecto.Schema
  import Ecto.Changeset

  schema "conversations" do
    field :status, :string, default: "open"
    field :read, :boolean, default: false

    timestamps()
  end
end

erxes (TypeScript):

export interface IConversation {
  _id: string;
  content: string;
  customerId: string;
  integrationId: string;
  status: string;
  readUserIds: string[];
  createdAt: Date;
  updatedAt: Date;
}

Both projects use different programming languages and have distinct approaches to handling conversations. Papercups uses Elixir with Ecto for schema definition, while erxes employs TypeScript with interfaces. The erxes implementation includes more fields and appears to have a more complex data structure, reflecting its broader feature set.

26,126

🦔 PostHog provides open-source web & product analytics, session recording, feature flagging and A/B testing that you can self-host. Get started - free.

Pros of PostHog

  • More comprehensive analytics platform with features like session recording, feature flags, and A/B testing
  • Larger and more active community, with more frequent updates and contributions
  • Supports multiple data storage options, including ClickHouse for high-performance analytics

Cons of PostHog

  • More complex setup and configuration compared to Papercups
  • Higher resource requirements due to its broader feature set
  • Steeper learning curve for new users

Code Comparison

PostHog (Python):

from posthog import Posthog

posthog = Posthog(project_api_key='your_project_api_key', host='https://app.posthog.com')
posthog.capture('distinct_id', 'event_name', {'property1': 'value1'})

Papercups (Elixir):

alias Papercups.{Conversations, Messages}

{:ok, conversation} = Conversations.create_conversation(%{account_id: account_id})
{:ok, message} = Messages.create_message(%{conversation_id: conversation.id, body: "Hello!"})

Both repositories offer customer engagement solutions, but PostHog focuses on product analytics and experimentation, while Papercups is primarily a customer support chat platform. PostHog provides a more extensive set of features for tracking user behavior and improving product performance, whereas Papercups offers a simpler, more focused solution for customer communication.

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

:warning: Maintenance Mode

Papercups is in maintenance mode. This means there won't be any major new features in the near future. We will still accept pull requests and conduct major bug fixes. Read more here

Papercups

Papercups is an open source live customer support tool web app written in Elixir. We offer a hosted version at app.papercups.io.

You can check out how our chat widget looks and play around with customizing it on our demo page. The chat widget component is also open sourced at github.com/papercups-io/chat-widget.

Watch how easy it is to get set up with our Slack integration 🚀 : slack-setup

One click Heroku deployment

The fastest way to get started is one click deploy on Heroku with:

Philosophy

We wanted to make a self-hosted customer support tool like Zendesk and Intercom for companies that have privacy and security concerns about having customer data going to third party services.

Features

  • Reply from email - use Papercups to answer support tickets via email
  • Reply from SMS - forward Twilio conversations and respond to SMS requests from Papercups
  • Custom chat widget - a customizable chat widget you can embed on your website to talk to your customers
  • React support - embed the chat widget as a React component, or a simple HTML snippet
  • React Native support - embed the chat widget in your React Native app
  • Flutter support - embed the chat widget in your Flutter app (courtesy of @aguilaair :heart:)
  • Slack integration - connect with Slack, so you can view and reply to messages directly from a Slack channel
  • Mattermost integration - connect with Mattermost, so you can view and reply to messages directly from Mattermost
  • Markdown and emoji support - use markdown and emoji to add character to your messages!
  • Invite your team - send invite links to your teammates to join your account
  • Conversation management - close, assign, and prioritize conversations
  • Built on Elixir - optimized for responsiveness, fault-tolerance, and support for realtime updates

Demo

We set up a simple page that demonstrates how Papercups works.

Try sending us a message to see what the chat experience is like!

Blog

Check out our blog for more updates and learnings

Documentation

Check out our docs at docs.papercups.io

Contributing

We :heart: contributions big or small. See CONTRIBUTING.md for a guide on how to get started.

Thanks to all of our contributors!

License

MIT © Papercups