> For the complete documentation index, see [llms.txt](https://docs.bindplane.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.bindplane.com/integrations/destinations/custom.md).

# Custom

The Custom destination exports telemetry by inserting a raw OpenTelemetry exporter configuration directly into the collector pipeline. Use it to test a new exporter or to reach a backend that Bindplane does not yet support natively. You paste the exporter YAML and select which signals it handles. It supports logs, metrics, and traces.

{% hint style="warning" %}
**Limitations**

The Custom destination only works with exporters that are compiled into the Bindplane Collector. A configuration that references an exporter not present in the collector will fail to start. See the [Included Components](https://github.com/observIQ/bindplane-otel-collector/tree/main#included-components) list for the components shipped in the collector, and the [Exporter Syntax](https://github.com/observIQ/bindplane-otel-collector/blob/main/docs/exporters.md) reference for the supported exporters and their configuration.

Because the YAML is inserted verbatim, Bindplane does not validate the exporter configuration. A malformed configuration or one that targets an unavailable exporter surfaces as a collector startup error rather than a Bindplane validation error.
{% endhint %}

### Supported Telemetry

| Metrics | Logs | Traces |
| ------- | ---- | ------ |
| ✓       | ✓    | ✓      |

The signals this destination exports depend on the Choose Telemetry Type selection. Only the selected signals are routed to the pasted exporter.

### Prerequisites

The Custom destination has no Bindplane-side prerequisites beyond the destination-specific requirements of whatever exporter you paste:

* The exporter must be one of the components compiled into the Bindplane Collector. See [Included Components](https://github.com/observIQ/bindplane-otel-collector/tree/main#included-components).
* Any credentials, endpoints, regions, or pre-created backend resources that the chosen exporter requires must be supplied inside the pasted configuration. Consult the upstream exporter's own documentation, linked from the [Exporter Syntax](https://github.com/observIQ/bindplane-otel-collector/blob/main/docs/exporters.md) reference.

### Configuration

<figure><img src="/files/eOJRW7eBhAZZVPczAel8" alt="Bindplane docs - Custom - image 1"><figcaption></figcaption></figure>

**Exporter**

| Parameter             | Type               | Required | Default   | Description                                                                                                                                                                                                                                                   |
| --------------------- | ------------------ | -------- | --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Choose Telemetry Type | Telemetry Selector | No       | *(empty)* | Which signals the exporter receives. Any combination of Logs, Metrics, and Traces. Only the selected signals are routed to the exporter.                                                                                                                      |
| Configuration         | YAML               | Yes      | —         | The OpenTelemetry exporter configuration to insert. Enter any supported exporter and the YAML is inserted into the collector configuration verbatim. See [Exporter Syntax](https://github.com/observIQ/bindplane-otel-collector/blob/main/docs/exporters.md). |

**Advanced**

| Parameter     | Type    | Required | Default | Description                                                                                                           |
| ------------- | ------- | -------- | ------- | --------------------------------------------------------------------------------------------------------------------- |
| Drop Raw Copy | Boolean | No       | `true`  | When enabled, the raw copy of the log stored in `log.record.original` is dropped before export. Applies to logs only. |

### Examples

#### Debug exporter for pipeline troubleshooting

The Debug exporter writes incoming telemetry to the collector's own log, which is useful for confirming that data reaches a destination. This example routes all three signals to it.

```yaml
apiVersion: bindplane.observiq.com/v1
kind: Destination
metadata:
  name: debug
spec:
  type: custom
  parameters:
    - name: telemetry_types
      value:
        - Logs
        - Metrics
        - Traces
    - name: configuration
      value: 'debug:'
```

#### AWS Kinesis exporter

Bindplane does not offer a native Kinesis destination, but the Bindplane Collector includes the [AWS Kinesis exporter](https://github.com/observIQ/bindplane-otel-collector/blob/main/docs/exporters.md). This example sends traces to a Kinesis stream.

```yaml
apiVersion: bindplane.observiq.com/v1
kind: Destination
metadata:
  name: kinesis
spec:
  type: custom
  parameters:
    - name: telemetry_types
      value:
        - Traces
    - name: configuration
      value: |-
        awskinesis:
          aws:
            stream_name: raw-trace-stream
            region: us-east-1
            role: arn:test-role
```

### Configuration Tips

* Confirm the exporter exists in the collector before applying. Cross-check the exporter key against the [Included Components](https://github.com/observIQ/bindplane-otel-collector/tree/main#included-components) and [Exporter Syntax](https://github.com/observIQ/bindplane-otel-collector/blob/main/docs/exporters.md) references. An unavailable exporter fails at collector startup, not at apply time.
* Select only the signals the exporter actually supports. Routing an unsupported signal to an exporter produces collector errors.
* Leave Drop Raw Copy enabled to avoid double-storing log bodies. Disable it only when a downstream consumer needs the original `log.record.original` field.

### Troubleshooting

#### Collector fails to start after applying the destination

Symptoms: the collector reports an unknown exporter type or a configuration parse error.

Solutions:

1. Verify the exporter is one of the [Included Components](https://github.com/observIQ/bindplane-otel-collector/tree/main#included-components) in the Bindplane Collector.
2. Check the pasted YAML for indentation or syntax errors. The configuration is inserted verbatim and is not validated by Bindplane.

#### No telemetry reaches the backend

Symptoms: the exporter loads but the destination receives nothing.

Solutions:

1. Confirm Choose Telemetry Type includes the signals you are sending. Unselected signals are not routed to the exporter.
2. Verify the credentials, endpoint, and region inside the pasted configuration against the exporter's own documentation.

#### Backend rejects credentials or returns permission errors

Symptoms: the exporter logs authentication or authorization failures.

Solutions:

1. The Custom destination passes the configuration through unchanged. Resolve the credentials and permissions per the upstream exporter's documentation.

### Standalone Destination

```yaml
apiVersion: bindplane.observiq.com/v1
kind: Destination
metadata:
  name: custom
spec:
  type: custom
  parameters:
    - name: telemetry_types
      value:
        - Logs
        - Metrics
        - Traces
    - name: configuration
      value: 'debug:'
    - name: drop_raw_copy
      value: true
```

### Related Resources

* [Bindplane Collector exporters reference (Exporter Syntax)](https://github.com/observIQ/bindplane-otel-collector/blob/main/docs/exporters.md)
* [Bindplane Collector Included Components](https://github.com/observIQ/bindplane-otel-collector/tree/main#included-components)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.bindplane.com/integrations/destinations/custom.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
