diff --git a/python/cocoindex/flow.py b/python/cocoindex/flow.py
index 031f4187..0c94e0c6 100644
--- a/python/cocoindex/flow.py
+++ b/python/cocoindex/flow.py
@@ -286,7 +286,8 @@ def collect(self, **kwargs):
def export(self, name: str, target_spec: op.StorageSpec, /, *,
primary_key_fields: Sequence[str] | None = None,
- vector_index: Sequence[tuple[str, vector.VectorSimilarityMetric]] = ()):
+ vector_index: Sequence[tuple[str, vector.VectorSimilarityMetric]] = (),
+ setup_by_user: bool = False):
"""
Export the collected data to the specified target.
"""
@@ -298,7 +299,7 @@ def export(self, name: str, target_spec: op.StorageSpec, /, *,
for field_name, metric in vector_index]
self._flow_builder_state.engine_flow_builder.export(
name, _spec_kind(target_spec), _dump_engine_object(target_spec),
- index_options, self._engine_data_collector)
+ index_options, self._engine_data_collector, setup_by_user)
_flow_name_builder = _NameBuilder()
diff --git a/src/base/spec.rs b/src/base/spec.rs
index 020be201..1d8b344f 100644
--- a/src/base/spec.rs
+++ b/src/base/spec.rs
@@ -231,6 +231,7 @@ pub struct ExportOpSpec {
pub collector_name: FieldName,
pub target: OpSpec,
pub index_options: IndexOptions,
+ pub setup_by_user: bool,
}
/// A reactive operation reacts on given input values.
diff --git a/src/builder/analyzer.rs b/src/builder/analyzer.rs
index 5a7f1efc..973407ef 100644
--- a/src/builder/analyzer.rs
+++ b/src/builder/analyzer.rs
@@ -904,10 +904,15 @@ impl AnalyzerContext<'_> {
let mut compatible_target_ids = HashSet::