Guide to exploring advanced customization options.

Open with custom element

The Campfire feedback widget can be launched from a custom element such as a link, in addition to the floating feedback launcher.

Simply add data-lw-onclick="#feedbackWidget" to any custom element. Below is how this may look.

<a href="#" data-lw-onclick="#feedbackWidget">Feedback</a>

Position the feedback button

If you'd prefer to relocate the feedback launcher button, you have the ability to do so with custom CSS. This may be helpful if the launcher covers another element on your page.

Here is an example of what that may look like.

.feedbackFloat { 
    margin-right: -20px !important;
    margin-bottom: -14px !important;

Pre-filling the email field

Sometimes you may want to prefill the email field for a user. You can easily do this by setting a custom GET variable for their email.

Campaign: This is the ID of your campaign.

Email: This is the email you'd like to prefill into the form.


If privacy mode is enabled, this will have no effect, as email collection is turned off.

Custom form endpoint

If needed, Campfire can be configured to send feedback responses to a custom endpoint, instead of data being saved inside Campfire. All data sent to the endpoint is sent in the form of a POST request.

To set up an endpoint, simply visit the Advanced page inside your campaign. Once you save, all data submitted by users will be sent through your endpoint, instead of Campfire.

From there, you can decide what you'd like to do with this data.

Below is a list of the data that will be sent over to your endpoint, once feedback is submitted.

Note: Some data processed by Campfire is not submitted in a POST request, so some variables such as IP addresses will not be sent to your endpoint.

Checking a form submission

In order to only process data through your endpoint when data is received, you'll want to check that the campaign variable has been sent in the POST request. See the example below.

<?php if(isset($_POST["campaign")) {

// Your code goes here

} ?>

For a more in-depth integration example, click here.

Last updated